javascript中用扩展运算符配合set实现数组去重最简洁高效,适用于原始类型;对对象数组需提取唯一标识手动过滤,且保持原顺序、返回新数组。

JavaScript 中用扩展运算符(...)配合 Set 实现数组去重,是最简洁、高效且兼容性良好的方法之一。
基本写法:一行搞定
利用 Set 自动去重的特性,再用扩展运算符把 Set 转回数组:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // 结果:[1, 2, 3, 4, 5]
为什么能去重?
Set 是 ES6 引入的集合类型,它的核心规则是:所有值唯一,重复添加会被忽略。构造时传入数组,它会自动过滤掉重复项;再用 [...set] 展开成新数组,就完成了去重。
-
Set对原始类型(数字、字符串、布尔值)严格按值比较,去重准确 - 对对象、数组等引用类型,仍按引用判断——即两个不同对象即使内容相同,也被视为不同元素
处理复杂数据(如对象数组)
直接用 Set 无法对对象数组去重,因为对象是引用类型。此时需先提取唯一标识(如 id),再手动过滤:
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
const seen = new Set();
const uniqueUsers = users.filter(item => {
if (seen.has(item.id)) return false;
seen.add(item.id);
return true;
});
// 结果:[{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
注意事项
- 该方法会保持原数组中首次出现元素的顺序
- 不修改原数组,返回全新数组(符合函数式编程习惯)
- IE 不支持
Set和扩展运算符,如需兼容旧浏览器,需搭配 Babel 或使用Array.from(new Set(arr))(兼容性略好)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










