登录
首页 >  文章 >  前端

JavaScript中Set的作用及去重方法

时间:2025-12-24 21:17:38 469浏览 收藏

小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《JavaScript中Set是什么,如何存储唯一值》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

JavaScript Set 是用于存储唯一值的内置对象,使用SameValueZero算法判断相等性(+0与-0、NaN与NaN均视为相等),支持任意类型值但对象按引用区分,提供add、has、delete及size等方法,常用于数组去重。

javascript Set是什么_它如何存储唯一的值

JavaScript Set 是一个内置对象,用来存储唯一值的集合。它不关心值的类型,可以存放数字、字符串、对象、函数,甚至 undefined 和 null,但同一个值在 Set 中只会出现一次——重复添加会被自动忽略。

Set 如何保证值的唯一性

Set 使用“SameValueZero”算法判断两个值是否相等(和 === 类似,但有个关键区别:+0 和 -0 被视为相等,NaN 和 NaN 也被视为相等)。这意味着:

  • new Set([0, -0, 0]) 实际只存一个 0
  • new Set([NaN, NaN]) 实际只存一个 NaN(而普通数组或对象无法这样识别 NaN)
  • new Set([{}, {}]) 会存两个对象,因为它们是不同引用(即使内容相同)

Set 的基本用法

创建 Set 后,常用方法有 add()has()delete()size 属性:

  • const s = new Set([1, 2, 2, 3])s.size3
  • s.add(2) 不改变内容,s.size 仍为 3
  • s.has(2) 返回 trues.delete(2) 成功后返回 true

Set 和数组去重的常见配合

利用 Set 构造器能快速去重数组:

  • [...new Set([1, 2, 2, 3])][1, 2, 3]
  • Array.from(new Set(arr)) 效果相同,适合需要调用其他 Array 方法的场景
  • 注意:Set 不支持直接索引访问(如 s[0]),要遍历请用 for...offorEach 或展开运算符

Set 与 Object / Map 的关键区别

Set 存的是“值”,不是“键值对”:

  • 没有键的概念,所以不能像 Map 那样用 get(key) 取值
  • 不能用字符串 key 索引,也不提供默认迭代顺序以外的查找方式(不像 Object 的属性名)
  • 如果需要“唯一键 + 对应值”,应该选 Map;如果只需“一堆不重复的值”,Set 更轻量、语义更清晰

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>