set天然不包含重复元素,转数组即得去重结果;最简方式是[...myset]或array.from(myset);对数组去重可写为[...new set(arr)];set按插入顺序保存元素,用samevaluezero判断唯一性。

JS 中的 Set 本身就是用来存储唯一值的集合,它**天然不包含重复元素**。所以“把 Set 转成数组并去重”这个说法其实有点误解 —— Set 转数组本身就已经是去重后的结果了。
直接用扩展运算符转成数组
这是最常用、最简洁的方式:
const mySet = new Set([1, 2, 2, 3, 4, 4, 5]); const arr = [...mySet]; // [1, 2, 3, 4, 5]
用 Array.from() 方法
功能和扩展运算符等价,兼容性略好(比如在某些旧环境或需要显式传参时):
const arr = Array.from(mySet); // [1, 2, 3, 4, 5]
如果原始数据是数组,想一步去重再转数组
常见场景:你有一组可能含重复项的数组,想快速得到去重后的新数组:
- 先用
new Set(arr)创建一个 Set(自动去重) - 再用
[...]或Array.from()转回数组
const original = [1, 1, 2, 3, 3, 4]; const uniqueArr = [...new Set(original)]; // [1, 2, 3, 4]
注意顺序和类型
Set 会按插入顺序保存元素,转成数组后顺序不变;它对值的唯一性判断基于 SameValueZero(类似 ===),所以:
-
0和-0被视为相同 -
NaN和NaN被视为相同(这是 Set 的特殊行为,和===不同) - 对象引用不同,即使内容一样也被视为不同元素











