最简洁标准的数组去重方式是用set构造函数包裹数组;基础写法为[...new set(arr)],它基于samevaluezero规则处理0、-0和nan,但对引用类型仍按内存地址判断,对象数组需配合filter与set提取唯一标识实现去重。

直接用 Set 构造函数包裹数组即可,这是最简洁、标准的方式。
基础写法:一行搞定去重
Set 本身会自动忽略重复值,所以传入数组后,它只保留唯一项:
const arr = [1, 2, 2, 3, 4, 4];const uniqueSet = new Set(arr); // Set {1, 2, 3, 4}
转回数组(如需继续操作)
如果后续要使用数组方法(比如 map、filter),可配合扩展运算符还原:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4]- 等价写法:
Array.from(new Set(arr))
注意类型与引用的细节
Set 的去重基于 SameValueZero 比较规则,这意味着:
-
0和-0被视为相同(new Set([0, -0])→Set {0}) -
NaN和NaN被视为相同(这是Set唯一能正确识别NaN相等性的场景) - 对象或数组等引用类型仍按内存地址判断,
[1]和[1]是两个不同元素
处理对象数组的去重(需额外逻辑)
Set 无法直接对对象数组去重,因为每个对象都是独立引用。此时需先提取唯一标识(如 id),再过滤:
const users = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}];const seen = new Set();const uniqueUsers = users.filter(item => !seen.has(item.id) && seen.add(item.id));
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










