数组去重
1. 使用Set,但是任意两个对象对于Set来说都是不同的,两个NaN对于Set来说也是相等的,不可去重的。
const arr1 = [1, 2, 4, 6, 2, 5]; // 返回一个新的数组(去重后的数组) function arrayUnique(arr) { return [...new Set(arr)]; } // 过程 console.log(new Set(arr1)) // Set(5) {1, 2, 4, 6, 5} console.log(...new Set(arr1)) // 1 2 4 6 5 console.log([...new Set(arr1)]) // [1, 2, 4, 6, 5] console.log(arr1) // [1, 2, 4, 6, 2, 5]
2. 通过遍历数组去重。
const arr2 = [{ id: 1, name: 'a'}, { id: 2, name: 'a'},{ id: 1, name: 'a'},{ id: 3, name: 'a'},{ id: 5, name: 'a'},{ id: 2, name:'a'}]; function arrayUnique(arr, attrName) { let map = new Map(); for (let item of arr) { if (!map.has(item[attrName])) { map.set(item[attrName], item); } } return [...map.values()]; } arrayUnique(arr2, 'id'); console.log(map); // Map(4) { // 1 => { id: 1, name: 'a' }, // 2 => { id: 2, name: 'a' }, // 3 => { id: 3, name: 'a' }, // 5 => { id: 5, name: 'a' } // } console.log(...map); // [ 1, { id: 1, name: 'a' } ] [ 2, { id: 2, name: 'a' } ] [ 3, { id: 3, name: 'a' } ] [ 5, { id: 5, name: 'a' } ] console.log(...map.values()); // { id: 1, name: 'a' } { id: 2, name: 'a' } { id: 3, name: 'a' } { id: 5, name: 'a' } console.log([...map.values()]); // [ // { id: 1, name: 'a' }, // { id: 2, name: 'a' }, // { id: 3, name: 'a' }, // { id: 5, name: 'a' } // ]

浙公网安备 33010602011771号