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 }

相關文章
相關標籤/搜索