当前位置: 首页 > news >正文

JavaScript Set 用法整理(速查版)

 

一、Set 是什么(一句话)

Set 是一个只允许“唯一值”的集合,常用于去重和快速查找。

二、创建 Set

1️⃣ 空 Set

const s = new Set();
2️⃣ 由数组创建(最常见)
const s = new Set([1, 2, 2, 3]);
// Set { 1, 2, 3 }

3️⃣ 由字符串创建

new Set('hello');
// Set { 'h', 'e', 'l', 'o' }

三、核心 API(100% 会用到)

add(value) 添加

s.add(4);

可链式:

s.add(5).add(6);

has(value) 判断是否存在 ⭐

s.has(2); // true
delete(value) 删除
s.delete(3); // true

clear() 清空

s.clear();

size 元素数量(属性)

s.size;

四、遍历 Set

1️⃣ for...of(推荐)

for (const v of s) {console.log(v);
}

2️⃣ forEach

s.forEach(v => {console.log(v);
});

3️⃣ values() / keys() / entries()

s.values();  // SetIterator
s.keys();    // 和 values 一样
s.entries(); // [value, value]

五、Set ⇄ Array 转换(最重要)

⭐ Set → Array(常用)

const arr = [...s];
// 或
Array.from(s);

⭐ Array → Set(去重)

const uniqueArr = [...new Set(arr)];

六、最常见实战场景 ⭐⭐⭐

1️⃣ 数组去重(99% 使用场景)

const ids = [1, 2, 2, 3];
const uniqueIds = [...new Set(ids)];

2️⃣ 快速判断是否存在(比数组快)

const whiteList = new Set(['a', 'b', 'c']);if (whiteList.has(key)) {// 允许
}

3️⃣ 两个数组求交集

const a = [1, 2, 3];
const b = [2, 3, 4];const setB = new Set(b);
const intersection = a.filter(x => setB.has(x));
// [2, 3]

4️⃣ 去重 + 业务处理

[...new Set(ids)].map(id => ({ id }));

七、Set 的“坑位提醒”⚠️

❌ 1️⃣ Set 没有 map / filter

s.map(...) // ❌

正确做法:

[...s].map(...)

❌ 2️⃣ 对象不会“按内容去重”

new Set([{ a: 1 }, { a: 1 }]);
// 不会去重!

👉 如果是对象去重,用 Map 更合适。

 

八、什么时候该用 Set?(决策口诀)

✔ 去重
✔ 高频 has 判断
❌ 要顺序逻辑 / map / filter → 用 Array
❌ key-value → 用 Map


九、终极记忆版(一句话)

Set = 去重 + 超快查找的集合,用完常转回数组。

如果你愿意,下一步我可以直接结合你常写的 Vue / React / three.js / 表格选择 场景,给你一版“看到就知道该用 Set 的代码模板”。

http://www.jsqmd.com/news/350721/

相关文章:

  • 硅谷一夜两弹! GPT-5.3-Codex狙击Claude 4.6, 奥特曼真急了
  • 合肥三十六行网络科技有限公司郑州分公司——郑州商家如何破局?专业代运营助力本地生活业绩飙升 - 野榜数据排行
  • 人工智能在数据管理中的投资回报率:炒作与可衡量的结果
  • MCP Apps引爆AI交互,ChatGPT渲染界面无需跳转
  • 2026年无锡民办高中推荐榜单:新吴区私立高中与综合高中实力解析,择校指南与口碑优选 - 品牌企业推荐师(官方)
  • TCP连接数限制与突破方法
  • OptiSystem应用:放大器泵浦功率效应
  • 基于 Clean Architecture + DDD 的轻量级工作流系统实践
  • 用于光栅仿真的非偏振光
  • 清单来了:10个降AI率工具测评对比,继续教育必备神器
  • 必收藏!程序员别慌!Java/C++/前端必看,大模型才是你的职业升级密码
  • 前端编程 课程十六、:CSS 盒子模型
  • 软著等了1年了,我打算上架google play
  • 收藏!2026年数据人必学技术:AI大模型才是破局关键(小白/程序员入门必看)
  • 必收藏!小白程序员入门大模型:别再把大模型和大语言模型混为一谈了
  • JAVA - 并发之不可变与享元
  • 必收藏!大模型推理优化实战指南(小白/程序员入门必备)
  • 新手也能上手!AI论文软件 千笔AI VS 万方智搜AI,本科生专属利器!
  • 锦州市英语雅思培训辅导机构推荐/2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 2026年聚合物锂电池厂家推荐排行榜:无人机/医疗设备/智能门锁/电动工具等多元应用领域优质品牌深度解析 - 品牌企业推荐师(官方)
  • 封神实测gInk屏幕画笔,8大核心特色碾压付费款,教师/办公党闭眼冲不踩雷
  • 周五记-2026.2.6
  • 锦州市英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 鼻前庭血管壁很脆弱,总是出鼻血怎么办、——鼻中隔右曲,会导致左边出鼻血吗?——基本上每天都会出,鼻子干,医生说结痂了,之前做过鼻内镜,现在还有必要做吗——推荐做电凝法-对于经常出血效果好于硝酸银法!!
  • 干货分享|零成本搭建CRM,蜘蛛表格3步搞定客户跟进,中小团队必备指南 - 蜘蛛小助理
  • 深入解析:Rust 中的数据结构选择与性能影响:从算法复杂度到硬件特性 [特殊字符]
  • 2026年2月徐州卧室套装/电视柜/装饰柜/储物柜/全屋定制/厂家推荐:行业洗牌期,谁是企业采购最优解? - 2026年企业推荐榜
  • 单片机控制单相电能计量电表设计
  • 降AI率实战:如何把40%的疑似率一次性降到10%以下 - 我要发一区
  • 为博客园注入现代 UI 体验:shadcn 皮肤上线