登录
首页 >  文章 >  前端

JS中Set和数组的区别解析

时间:2025-12-25 09:56:29 214浏览 收藏

对于一个文章开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《JavaScript Set 与数组区别详解》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

JavaScript的Set是存储唯一值的内置集合,用于去重、存在性判断和集合运算;与数组相比,它拒绝重复、无索引、不保证遍历顺序,提供add/has/delete等高效集合操作。

javascript Set是什么_与数组有何不同

JavaScript 的 Set 是一种内置集合数据结构,专门用来存储**唯一值**——无论原始值还是对象引用,重复添加的值会被自动忽略。它不是数组的替代品,而是解决特定问题的工具:去重、快速存在性判断、集合运算。

核心区别:唯一性 vs 重复性

数组允许完全相同的元素多次出现,而 Set 天然拒绝重复:

  • 数组[1, 1, 2, 2, 3] 是合法且保留全部 5 个元素的;
  • Setnew Set([1, 1, 2, 2, 3]) 实际只存 {1, 2, 3}.size 为 3。

结构特性:无序性 vs 有序性

数组按插入顺序严格排列,每个元素有确定索引(arr[0]arr[1]);Set 没有索引,不保证遍历顺序(尽管现代引擎大多保持插入顺序,但规范不保证,不可依赖):

  • 不能用 set[0] 访问元素;
  • 要取值,得转成数组(Array.from(set)[...set])或用 for...of 迭代。

常用操作方式不同

数组靠索引和方法链操作(pushfiltermap);Set 提供语义更清晰的集合操作 API:

  • add(value) —— 添加,自动去重,返回自身(可链式);
  • has(value) —— 判断是否存在,时间复杂度 O(1),比数组 includes()indexOf() 快得多;
  • delete(value) —— 按值删除(无需找索引),返回布尔值;
  • clear()size 属性 —— 清空和计数,比数组 length = 0 或手动计数更直观。

典型使用场景对比

选数组,当你需要:

  • 按位置访问或修改元素(如 arr[2] = 'x');
  • 保留重复项(如日志列表、用户点击流);
  • 大量使用 mapreducesort 等高阶函数。

选 Set,当你需要:

  • 快速去重([...new Set(arr)] 是最简去重写法);
  • 高频检查某值是否已存在(如防重复提交、缓存键管理);
  • 做集合运算(并集、交集、差集),配合扩展运算符和 filter 很容易实现。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《JS中Set和数组的区别解析》文章吧,也可关注golang学习网公众号了解相关技术文章。

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