论数组去重之高效方法
论数组去重之高效方法
数组去重的高效方法主要有 利用 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哈希表(兼容性好)
- 原理:利用对象的键唯一性记录
