数组对象去重利用obj
var arr = [
{ name:'测试',key:'123456' },
{ name:'测试1',key:'1234566' },
{ name:'测试2',key:'12345666' },
{ name:'测试2',key:'12345666' }
]//未去重的数组
var result = []//去重之后的数组
var obj = {}//用于去重的对象
for(var i =0;i<arr.lenght;i++){
if(!obj[arr[i].key]){
result.push(arr[i])
obj[arr[i].key] = true
}
}
数组对象去重reduce
var arr = [
{ name:'测试',key:'123456' },
{ name:'测试1',key:'1234566' },
{ name:'测试2',key:'12345666' },
{ name:'测试2',key:'12345666' }
]//未去重的数组
var obj = {}
var newArr = arr.reduce(function(item,next){
obj[item.key]?'':obj[item.next] = true&&item.push(next)
return item
},[])
数组对象去重every
var temp = []
function duplicate (){
arr.forEach(item=>{
//every数组中的每一个元素都会执行
var check = temp.every(function(b){
return item.key !== b.key
})
check?temp.push(item):''
})
}
数组数字去重
es6提供了一个set可以直接对js数字数组去重
var arr = [1,1,2,3,4,5,6,6]
var newArr = Array.from(new Set(arr))//返回去重之后的数组
数组去重indexOf
function unique(arr){
var arr1 = []; // 新建一个数组来存放arr中的值
for(var i=0,len=arr.length;i<len;i++){
if(arr1.indexOf(arr[i]) === -1){
arr1.push(arr[i]);
}
}
return arr1;
}
数组去重filter
/*
模拟: 原始数组:[1,2,8,9,5,8,4,0,4]
索引值:0,1,2,3,4,5,6,7,8
伪新数组:[1,2,8,9,5,8,4,0,4]
使用indexOf方法找到数组中的元素在元素在中第一次出现的索引值
索引值:0,1,2,3,4,2,6,7,6
返回前后索引值相同的元素:
新数组:[1,2,8,9,5,4,0]
*/
function unique( arr ){
// 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
return arr.filter(function(item,index){
return arr.indexOf(item,0) === index;
});
}