📅  最后修改于: 2023-12-03 14:42:34.880000             🧑  作者: Mango
在 JavaScript 中,数组是一种非常常用的数据结构。有时候我们会遇到需要从数组中获取唯一的元素集合的情况,也就是去重操作。本篇介绍了一些常用的方法来实现 JavaScript 数组的去重操作。
在 ES6 中,引入了 Set 这个数据结构。Set 是一种有点类似数组的集合,但是不允许元素重复。我们可以很方便地使用 Set 来实现数组去重。
const array = [1, 2, 3, 3, 4, 5, 5];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]
上述代码中,我们使用了扩展运算符 ...
来将 Set 转化为数组。
我们可以使用数组的 filter
函数来实现数组的去重。 filter
函数接受一个回调函数,并返回一个新的数组,回调函数决定了新数组的元素。
const array = [1, 2, 3, 3, 4, 5, 5];
const uniqueArray = array.filter((value, index, self) => {
return self.indexOf(value) === index;
});
console.log(uniqueArray); // [1, 2, 3, 4, 5]
上述代码中,我们通过 indexOf
方法来判断当前元素在数组中的第一个索引是否等于当前索引,如果是,说明是新数组中的元素。
我们可以使用数组的 reduce
函数来实现数组的去重。 reduce
函数接受一个回调函数和一个初始值,并返回一个新的值,回调函数决定了新值的计算方法。
const array = [1, 2, 3, 3, 4, 5, 5];
const uniqueArray = array.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]
上述代码中,我们使用了 includes
方法来判断新值数组中是否已经存在当前元素,如果不存在,将其添加进新值数组中。
我们也可以使用 Map 数据结构来实现数组的去重。 Map 是一种键值对的集合,其中键不允许重复。
const array = [1, 2, 3, 3, 4, 5, 5];
const uniqueArray = Array.from(new Map(array.map((value) => [value, value])).values());
console.log(uniqueArray); // [1, 2, 3, 4, 5]
上述代码中,我们先使用 map
方法将数组中的元素转化为键值对形式的数组,然后通过 Map
构造函数将其转化为 Map 对象,最后使用 Array.from
方法将 Map 对象的值转化为数组。
以上就是一些常用的 JavaScript 数组去重的方法。这些方法都能很方便地实现数组去重,你可以根据实际需求选择适合的方法。