📅  最后修改于: 2023-12-03 15:16:15.589000             🧑  作者: Mango
在 JavaScript 中,经常会遇到需要获取数组中唯一项的情况。本文将介绍几种从 JavaScript 数组中获取唯一项的方法。
ES6 中引入了 Set,它是一种新的数据结构,可以用来存储任何类型的唯一值。可以将数组转换为 Set,然后再将 Set 转换回数组,就可以获取到数组中的唯一项。
const arr = ['a', 'a', 'b', 'c', 'c'];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // ['a', 'b', 'c']
可以使用 Array.filter 方法来过滤掉重复项,仅保留唯一项。在 filter 方法的回调函数中,可以使用 indexOf 来检查当前项是否为数组中的第一个出现的位置。
const arr = ['a', 'a', 'b', 'c', 'c'];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // ['a', 'b', 'c']
可以使用 Array.reduce 方法来遍历数组,并建立一个新的数组,仅包含数组中唯一的项。在 reduce 方法中,可以使用 indexOf 来检查当前项是否为数组中的第一个出现的位置。
const arr = ['a', 'a', 'b', 'c', 'c'];
const uniqueArr = arr.reduce((newArr, item) => {
if (newArr.indexOf(item) === -1) {
newArr.push(item);
}
return newArr;
}, []);
console.log(uniqueArr); // ['a', 'b', 'c']
可以使用 Object.keys 和 Object.fromEntries 方法来过滤掉重复项,仅保留唯一项。首先,将数组转换为键值对数组,然后再将其转换为对象。重复的键会自动被覆盖,因此只会保留一个唯一项。最后,可以将对象的键重新转换为数组。
const arr = ['a', 'a', 'b', 'c', 'c'];
const uniqueArr = Object.keys(Object.fromEntries(arr.map(item => [item, undefined])));
console.log(uniqueArr); // ['a', 'b', 'c']
以上是获取 JavaScript 数组中唯一项的几种方法,每种方法都有其优缺点,具体使用时需要根据实际情况选择合适的方法。