📅  最后修改于: 2023-12-03 15:26:10.407000             🧑  作者: Mango
在JavaScript中,数组是一种常用的数据类型。有时候我们需要从数组中获取唯一的值集合,即去掉重复的值。这里介绍几种实现方法。
ES6中引入了Set数据结构,它是一种类似于数组但唯一的值集合。我们可以先将数组的所有值添加到Set中,然后再将Set转换为数组即可。
const arr = [1, 2, 3, 1, 2, 4];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4]
这里使用Array.from()方法将Set转换为数组。也可以使用扩展运算符(...)来转换。
const arr = [1, 2, 3, 1, 2, 4];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4]
另外,可以使用Set构造函数来创建一个空的Set集合,然后使用add()方法来添加数组中的元素。
const arr = [1, 2, 3, 1, 2, 4];
const uniqueSet = new Set();
arr.forEach(num => {
uniqueSet.add(num);
});
const uniqueArr = Array.from(uniqueSet);
console.log(uniqueArr); // [1, 2, 3, 4]
我们可以使用indexOf()方法来比较每个值在数组中的位置,只添加第一次出现的值到新的数组中。
const arr = [1, 2, 3, 1, 2, 4];
const uniqueArr = [];
arr.forEach(num => {
if (uniqueArr.indexOf(num) === -1) {
uniqueArr.push(num);
}
});
console.log(uniqueArr); // [1, 2, 3, 4]
reduce()方法用于对数组中的元素依次处理并返回一个最终结果。在这里,我们使用reduce()方法来比较新数组中是否已经有当前元素。如果没有,就将它添加到新数组中。
const arr = [1, 2, 3, 1, 2, 4];
const uniqueArr = arr.reduce((acc, currentValue) => {
if (acc.indexOf(currentValue) === -1) {
acc.push(currentValue);
}
return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4]
这里,reduce()方法的第二个参数[]是一个初始值,表示初始的结果为空数组。
以上就是在JavaScript中获取唯一数组值的方法。使用ES6中的Set数据结构是最方便的方法,但也可以使用indexOf()或reduce()方法来实现。