返回

深入理解数组去重的三种方法:揭秘数据结构中的奥秘

前端

数组去重是数据处理中的一个常见需求,旨在从数组中剔除重复元素,获取一份精简且唯一的数据集。在 JavaScript 中,有多种方法可以实现数组去重,每种方法都有其独特的优势和应用场景。

1. Set:内建去重神器

Set 数据结构是专门为处理唯一元素而设计的。它提供了一种简洁高效的方式来去除数组中的重复项。只需将数组元素传递给 Set 构造函数,即可得到一份去重后的新 Set。

const originalArray = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArray = new Set(originalArray);
console.log(uniqueArray); // 输出:Set { 1, 2, 3, 4, 5 }

2. Map:巧用键值对去重

Map 数据结构可以将键值对存储为对象。我们可以利用这一特性来实现数组去重。将数组元素作为键,并将任意值(例如 true)作为值。然后,我们可以遍历 Map 并收集键,从而获得一个不含重复元素的新数组。

const originalArray = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueMap = new Map();
originalArray.forEach((element) => uniqueMap.set(element, true));
const uniqueArray = [...uniqueMap.keys()];
console.log(uniqueArray); // 输出: [ 1, 2, 3, 4, 5 ]

3. Filter + includes:组合出击

Filter 函数可以根据提供的条件过滤数组中的元素。我们可以结合 includes 函数来实现数组去重。首先,使用 Filter 筛选出不包含在结果数组中的元素。然后,使用 includes 检查元素是否已存在于结果数组中。

const originalArray = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArray = originalArray.filter((element) => !uniqueArray.includes(element));
console.log(uniqueArray); // 输出: [ 1, 2, 3, 4, 5 ]

总结

这三种方法各有千秋,在不同的场景下都有其适用性。Set 适用于需要快速去重的简单场景。Map 则适用于需要保留元素原始顺序或想要进一步操作元素键值对的情况。Filter + includes 组合可以灵活地根据自定义条件进行去重。

掌握了这些数组去重的利器,你将能够轻松处理数据,剔除重复,获取干净整洁的数据集,为你的应用程序或项目奠定坚实的基础。