常见普通数组去重
利用Es6 Set去重
unique(arr){
return Array.from(new Set(arr))
},
利用filter
unique(arr){
return arr.filter((item,index,arr)=>{
return arr.indexOf(item,0) === index;
});
},
利用双for循环,然后solice去重
unique(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] == arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
},
数组里面对象去重
利用对象访问属性的方法,判断对象中是否存在key
var arr = [{
key: '1',
value: '1'
}, {
key: '2',
value: '2'
}, {
key: '3',
value: '3'
}, {
key: '4',
value: '4'
}, {
key: '1',
value: '1'
}, {
key: '1',
value: '1'
}];
var result = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].key]) {
result.push(arr[i]);
obj[arr[i].key] = true;
}
}
console.log(result);
利用两层for循环和布尔值的方法进行去重
var result = [];
for (var i = 0; i < arr.length; i++) {
var flag = true;
for (var j = 0; j < result.length; j++) {
if (arr[i].key === result[j].key) {
flag = false;
}
}
if (flag) {
result.push(arr[i]);
}
}
console.log(result);
利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
var obj = {};
arr = arr.reduce(function (item, next) {
obj[next.key] ? '' : obj[next.key] = true && item.push(next);
return item;
}, []);
console.log(arr);