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 }