数组去重
数组去重是前端开发中比较常见的问题,有多种方法可以实现:
- 使用 Set 去重(ES6)
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
- 使用 filter 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((item, index, self) => {
return self.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
- 使用 reduce 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
prev.push(cur);
}
return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
- 使用 map 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const map = new Map();
const uniqueArr = [];
arr.forEach((item) => {
if (!map.has(item)) {
map.set(item, true);
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
- 使用对象属性去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const obj = {};
arr.forEach((item) => {
obj[item] = true;
});
const uniqueArr = Object.keys(obj).map((item) => {
return Number(item);
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
以上这些方法都可以实现数组去重,但是每种方法的效率和适用场景都有所不同,需要根据实际情况进行选择。
forever young