📜  javascript 数组 distinct - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:34.880000             🧑  作者: Mango

JavaScript 数组 distinct - Javascript

在 JavaScript 中,数组是一种非常常用的数据结构。有时候我们会遇到需要从数组中获取唯一的元素集合的情况,也就是去重操作。本篇介绍了一些常用的方法来实现 JavaScript 数组的去重操作。

方法1: 使用 Set

在 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 转化为数组。

方法2: 使用数组的 filter 函数

我们可以使用数组的 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 方法来判断当前元素在数组中的第一个索引是否等于当前索引,如果是,说明是新数组中的元素。

方法3: 使用 reduce 函数

我们可以使用数组的 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 方法来判断新值数组中是否已经存在当前元素,如果不存在,将其添加进新值数组中。

方法4: 使用 Map

我们也可以使用 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 数组去重的方法。这些方法都能很方便地实现数组去重,你可以根据实际需求选择适合的方法。