首页 > web前端 > js教程 > 正文

JavaScript Set是什么_和数组有什么不同?

紅蓮之龍
发布: 2025-12-21 20:53:02
原创
705人浏览过
JavaScript 的 Set 是用于存储唯一值的无序集合,自动去重、不支持索引访问、具备 O(1) 查存性能,适用于去重、存在性判断和集合运算等场景。

javascript set是什么_和数组有什么不同?

JavaScript 的 Set 是一种内置的数据结构,用来存储**唯一值的集合**——它自动过滤重复项,不关心顺序,也不提供索引访问。和数组(Array)看起来相似,但设计目标和行为逻辑完全不同。

Set 的核心特点

• 值唯一:同一值只能存在一次,重复添加会被忽略。
• 无序:插入顺序不保证遍历顺序(尽管当前引擎大多保持插入序,但这不是规范要求)。
• 无索引:不能用 set[0] 取值,必须用迭代或转换成数组才能按位置访问。
• 支持任意类型:数字、字符串、布尔、对象、函数、甚至 NaN(Set 中的 NaN 被视为同一个值,这点比数组的 indexOf 更合理)。

和数组最直观的区别

去重能力:Set 天然去重;数组默认保留所有元素,去重要靠额外逻辑(如 [...new Set(arr)])。
访问方式:数组靠索引(arr[2]),Set 靠方法(set.has(x)set.add(x))。
长度属性名不同:数组是 .length,Set 是 .size
遍历方式类似但不可互换:两者都支持 for...offorEach,但数组有 map/filter 等高阶方法,Set 没有,需先转数组。

什么时候该用 Set 而不是数组?

• 需要频繁判断某个值“是否存在”(has() 是 O(1),比数组 includes() 或循环快得多)。
• 处理大量数据并确保唯一性(比如用户 ID 列表、日志事件类型统计)。
• 做集合运算(并集、交集、差集),用 Set 搭配展开语法或过滤更简洁。例如:
const union = new Set([...setA, ...setB]);
const intersection = new Set([...setA].filter(x => setB.has(x)));

立即学习Java免费学习笔记(深入)”;

简单转换很常见

• 数组 → Set:new Set([1,2,2,3])Set {1, 2, 3}
• Set → 数组:Array.from(mySet)[...mySet]
• 注意:对象或数组等引用类型在 Set 中仍按引用判重,两个内容相同但地址不同的数组,会被视为不同成员。

基本上就这些。用对场景,Set 就是轻量又高效的“去重+查存”利器。

以上就是JavaScript Set是什么_和数组有什么不同?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号