📌  相关文章
📜  js 从数组中删除重复项 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:00.675000             🧑  作者: Mango

JS从数组中删除重复项 - Javascript

在日常编程中,数组中存在重复项是很常见的。本篇文章将介绍如何使用JS从数组中删除重复项。

方法一:使用Set

使用Set可以快速地去除数组中所有的重复项。

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

解释:

  • 将数组arr转换为Set,Set会自动去除所有的重复项
  • 使用扩展运算符将Set转换为新数组newArr

注意,Set返回的是一个迭代器对象,所以需要使用扩展运算符转换为新数组。

方法二:使用reduce

使用reduce方法可以遍历数组并逐步构建一个新数组,将重复的项过滤掉。

const arr = [1, 2, 3, 3, 4, 5, 5];
const newArr = arr.reduce((acc, curr) => {
  if (!acc.includes(curr)) {
    return [...acc, curr];
  }
  return acc;
}, []);
console.log(newArr); // [1, 2, 3, 4, 5]

解释:

  • 使用reduce方法遍历数组,并将结果保存在acc中
  • 判断当前项curr是否已经在新数组acc中存在
  • 如果不存在,则将其添加到新数组中
方法三:使用filter

使用filter方法可以对数组中的每一项进行过滤,只保留符合条件的项。为了去除重复项,我们可以筛选出索引值与当前值相等的项。

const arr = [1, 2, 3, 3, 4, 5, 5];
const newArr = arr.filter((curr, index) => {
  return arr.indexOf(curr) === index;
});
console.log(newArr); // [1, 2, 3, 4, 5]

解释:

  • 使用filter方法遍历数组,并验证每一项是否符合条件
  • 使用indexOf方法获取当前项在数组中的索引值
  • 只保留索引值与当前值相等的项

这种方法比较慢,因为indexOf方法的时间复杂度是O(n),需要遍历整个数组找到当前项的位置。

以上就是三种常见的方法,可以快速地去除数组中的重复项。希望本篇文章能帮助到大家。