JavaScript:常用的数组去重方法

70 阅读1分钟

1. 使用Set:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [ 1, 2, 3, 4, 5 ]

这种方法利用Set数据结构的特性,Set中的元素是唯一的,可以通过将数组转换为Set,然后将Set转回数组的方式实现数组去重。

2. 使用filter方法:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = arr.filter((value, index, self) => {
  return self.indexOf(value) === index;
});
console.log(uniqueArr); // [ 1, 2, 3, 4, 5 ]

这种方法使用filter方法遍历数组,对于每个元素,判断它在数组中第一次出现的索引和当前索引是否相等,相等则保留,否则过滤掉。

3. 使用reduce方法:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = arr.reduce((prev, curr) => {
  if (!prev.includes(curr)) {
    prev.push(curr);
  }
  return prev;
}, []);
console.log(uniqueArr); // [ 1, 2, 3, 4, 5 ]

这种方法使用reduce方法遍历数组,对于每个元素,判断它是否已经在结果数组中存在,如果不存在则将其添加到结果数组中。

4. 使用Map:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = Array.from(new Map(arr.map(item => [item, item])).values());
console.log(uniqueArr); // [ 1, 2, 3, 4, 5 ]

这种方法利用Map数据结构的特性,Map中的键是唯一的,可以通过遍历数组,将数组的每个元素作为Map的键和值,然后取出Map的值数组来实现去重。

5. 使用indexOf和forEach:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = [];
arr.forEach(item => {
  if (uniqueArr.indexOf(item) === -1) {
    uniqueArr.push(item);
  }
});
console.log(uniqueArr); // [ 1, 2, 3, 4, 5 ]

这种方法使用forEach方法遍历数组,对于每个元素,判断它在结果数组中是否已经存在,如果不存在则将其添加到结果数组中。

以上是几种常见的数组去重方法,可以根据具体情况选择适合的方法来使用,如有错,还请指正! ( OvO )