1 ) Array.from + Set 去重
function unique(arr) {
return Array.from(new Set(arr));
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]
2. Set + rest参数 去重
function unique(arr) {
return [...new Set(arr)];
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]
3.传统去重: 循环 + indexOf
function unique(arr) {
const res = [];
arr.forEach(item => {
if (res.indexOf(item) < 0) res.push(item);
})
return res;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]
4. 传统去重: 循环 + indexOf + lastIndexOf
function unique(arr) {
const res = [];
arr.forEach(item => {
if (res.indexOf(item) < 0) res.push(item);
})
return res;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]
5.map 去重
function unique(arr) {
const map = new Map();
const tmp = [];
arr.forEach(item => {
// 判断是否存在该key值, 当前值作为map的key值
if (!map.has(item)) {
map.set(item, 1); // 1 或 true
tmp.push(item);
}
});
return tmp;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]
简单记录一下 去重的几种干事