JS数组去重的两种方式
1 普通数组去重
let arr = [1,2,3,2,5,3,1,NaN, null, false, undefined, false, NaN, null, undefined];
1.1 ES5实现
// foreach循环
deleteCopy(arr){
let obj={};
let newArr = [];
// 利用对象的key值
arr.forEach((item,index) => {
if(!obj[item]){
obj[item] = true;
newArr.push(item);
}
});
console.log(newArr);
// [1, 2, 3, 5, NaN, null, false, undefined]
},
1.2 ES6
// set返回的是一个对象,该用Array.form,可以把类数组对象、可迭代对象转化为数组
deleteCopyES6(arr){
console.log(Array.from(new Set(arr)))
// [1, 2, 3, 5, NaN, null, false, undefined]
},
2 数组对象属性去重
2.1 对象属性去重是实际开发当中最常用的。也是利用对象的key值的唯一性来去重。
1 const arr = [{ 2 id: '123', 3 name: '张三' 4 }, { 5 id: '111', 6 name: '李四' 7 }, { 8 id: '123', 9 name: '王五' 10 } 11 ] 12 function deleteRepeat(arr, key) { 13 let result = [], obj = {}; 14 arr.forEach(item => { 15 if (!obj[item[key]]) { 16 result.push(item); 17 obj[item[key]] = true 18 } 19 }) 20 return result; 21 } 22 console.log(deleteRepeat(arr, 'id'))
2.2 利用ES6的Map方法
1 function unique(arr, key) { 2 let map = new Map(); 3 arr.forEach((item,index) => !map.has(item[key]) ? map.set(item[key],item) : ''); 4 return [...map.values()] 5 }


浙公网安备 33010602011771号