📌  相关文章
📜  在数组 javascript 中查找唯一元素(1)

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

在 JavaScript 数组中查找唯一元素

在 JavaScript 中,有时需要在数组中查找唯一元素。本文将介绍几种方法实现这一功能。

方法一:使用 Set 数组

使用 Set 数组是最简单的方法之一。 Set 对象允许你存储任何类型的唯一值,包括原始类型和对象引用。通过将数组转换为 Set,重复元素将自动被过滤掉。然后,将 Set 转换回数组即可。

const arr = [1, 2, 3, 1, 2, 3, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
方法二:使用 reduce() 方法

reduce() 方法会对数组中的每个元素依次执行指定的函数,并将其结果汇总为单个返回值。在这个例子中,我们使用 reduce() 方法来创建一个新的数组,该数组只包含唯一的值。

const arr = [1, 2, 3, 1, 2, 3, 4, 5];
const uniqueArr = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
方法三:使用 filter() 方法

filter() 方法会创建一个新的数组,该数组包含符合指定条件的所有元素。在这个例子中,我们使用 filter() 方法,仅包含在数组中第一次出现的元素。

const arr = [1, 2, 3, 1, 2, 3, 4, 5];
const uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
方法四:使用 ES6 Map 保存计数

Map 是一种新的数据结构,它允许我们使用键值对来存储数据。在这个例子中,我们使用 Map 对象来保存数组中每个元素的计数,然后过滤掉计数大于 1 的元素。

const arr = [1, 2, 3, 1, 2, 3, 4, 5];
const countMap = new Map();
arr.forEach(item => {
  countMap.has(item) ? countMap.set(item, countMap.get(item) + 1) : countMap.set(item, 1);
});
const uniqueArr = arr.filter(item => {
  if (countMap.get(item) === 1) {
    countMap.delete(item);
    return true;
  }
  return false;
});
console.log(uniqueArr); // [4, 5]

以上是 JavaScript 中在数组中查找唯一元素的几种方法。我们可以根据场景的不同使用不同的方法,提高代码的效率。