返回

数组元素去重,六种方法帮您搞定!

前端

想要在数组中剔除重复元素,方法有多种,我们精心整理了六种高效解决方案,让你的去重之旅变得轻松愉快!

1. 使用 Set 数据结构

Set 是一种内建的数据结构,天生具备去重的特性。将数组元素添加到 Set 中,即可自动过滤重复项。

const arr = [1, 2, 3, 3, 4, 5, 5];
const set = new Set(arr);
const uniqueArr = [...set]; // [1, 2, 3, 4, 5]

2. 利用 Map 数据结构

Map 也是一个不错的选择,它可以将每个元素作为键,并将其自身作为值。这样一来,重复的元素将被覆盖,留下独一无二的键。

const arr = [1, 2, 3, 3, 4, 5, 5];
const map = new Map();
arr.forEach((item) => map.set(item, item));
const uniqueArr = [...map.keys()]; // [1, 2, 3, 4, 5]

3. 借助 Array.filter()

Array.filter() 可以筛选数组元素,返回一个新数组,其中只包含满足指定条件的元素。我们可以利用这个特性,将重复元素过滤掉。

const arr = [1, 2, 3, 3, 4, 5, 5];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // [1, 2, 3, 4, 5]

4. 巧用 Array.reduce()

Array.reduce() 可以将数组元素逐个累积,并返回一个单一值。我们可以利用这个特性,将数组元素累积到一个 Set 中,从而实现去重。

const arr = [1, 2, 3, 3, 4, 5, 5];
const uniqueArr = arr.reduce((acc, cur) => acc.add(cur), new Set()); // [1, 2, 3, 4, 5]

5. 通过 Array.sort() 和 Array.indexOf()

Array.sort() 可以将数组元素按升序或降序排列,而 Array.indexOf() 可以返回元素在数组中的索引。我们可以利用这两个方法,找出重复元素并将其剔除。

const arr = [1, 2, 3, 3, 4, 5, 5];
arr.sort(); // [1, 2, 3, 3, 4, 5, 5]
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // [1, 2, 3, 4, 5]

6. 利用 Array.from() 和 Set

Array.from() 可以将可迭代对象转换为数组,而 Set 可以自动去重。我们可以将数组元素转换为 Set,再将其转换为新数组。

const arr = [1, 2, 3, 3, 4, 5, 5];
const set = new Set(arr);
const uniqueArr = Array.from(set); // [1, 2, 3, 4, 5]

掌握了这些去重方法,数组元素去重再也不是难事!根据具体场景,选择最适合你的方法,让你的数据处理更加高效!