数组去重

数组去重是前端开发中比较常见的问题,有多种方法可以实现:

  1. 使用 Set 去重(ES6)
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 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]
  1. 使用 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]
  1. 使用 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]
  1. 使用对象属性去重
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]

以上这些方法都可以实现数组去重,但是每种方法的效率和适用场景都有所不同,需要根据实际情况进行选择。

posted @ 2023-06-03 19:42  kitebear  阅读(2)  评论(0编辑  收藏  举报