用[...new set(arr)]或array.from(new set(arr))可将数组去重并转为新数组,保持首次出现顺序,适用于基本类型;无法处理对象等引用类型。

直接用 Array.from() 或展开运算符 [...set] 就能把去重后的 Set 转回普通数组,格式和原数组一致(仍是数组,元素顺序为首次出现顺序)。
用展开运算符转回数组
这是最简洁常用的方式,适合大多数场景:
const uniqueArr = [...new Set(originalArr)]- 保留原始数组中各元素**第一次出现的顺序**
- 对字符串、数字、布尔值等基本类型去重完全可靠
- 注意:不能处理对象或数组等引用类型(因为
Set判重基于Object.is(),对象即使内容相同也视为不同)
用 Array.from() 转回数组
功能和展开运算符等价,语义更明确,适合需要额外处理的场景(比如映射):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const uniqueArr = Array.from(new Set(originalArr))- 同样保持插入顺序(即原数组首次出现顺序)
- 支持第二个参数作为映射函数,例如:
Array.from(new Set([1,2,3]), x => x * 2)→[2,4,6]
注意:Set 本身不改变原数组,也不“还原”结构
Set 去重后是一个新集合,它没有索引、没有重复项、不保留键名(如数组的数字下标)。所谓“转回原格式”,仅指得到一个**和原数组类型相同(即普通 Array)、长度可能变短、元素唯一且顺序不变**的新数组。它不是“恢复”原数组,而是生成一个干净的去重副本。
- 原数组是
[1, '1', 1, true]→Set会保留1、'1'、true(因为1 !== '1',1 !== true) - 若需深度去重(如对象数组),需先序列化或自定义逻辑,
Set无法直接处理
不复杂但容易忽略:只要确保输入是可枚举的基本类型,[...new Set(arr)] 就是最直接有效的方案。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










