JS数组去重的两种方式

1  普通数组去重javascript

let arr = [1,2,3,2,5,3,1,NaN, null, false, undefined, false, NaN, null, undefined];

  1.1 ES5实现java

// 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  数组对象属性去重spa

  2.1 对象属性去重是实际开发当中最经常使用的。也是利用对象的key值的惟一性来去重。  code

 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方法orm

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 }

相关文章
相关标签/搜索