论数组去重之高效方法
数组去重的高效方法主要有 利用 Set
数据结构、利用对象/Map哈希表、排序后遍历去重 三种核心方案。其中 Set
是ES6最简单高效的方式,时间复杂度为 O(n)
;若需兼容性优化或处理特殊数据类型,可结合哈希表或排序实现。
分点论述:
1. 使用 Set
数据结构(ES6,最优解)
- 原理:
Set
是ES6中存储唯一值的集合类型,直接过滤重复元素。 - 实现:
const uniqueArray = [...new Set(arr)]; // 或 const uniqueArray = Array.from(new Set(arr));
- 优势:
- 时间复杂度
O(n)
,性能最优。 - 代码简洁,一行实现。
- 自动处理
NaN
(Set
认为NaN === NaN
,而indexOf
无法识别)。
- 时间复杂度
- 注意:无法区分对象引用(如
{} !== {}
),但对象本身引用不同则视为不重复。
2. 利用对象/Map哈希表(兼容性好)
- 原理:利用对象的键唯一性记录