es6知识点6-自备使用
16.SetSet可以理解成一个“不允许重复值”的集合。最常见用途就是数组去重。16.1 基本使用constsetnewSet()set.add(1)set.add(2)set.add(2)set.add(3)console.log(set)结果Set(3){1,2,3}虽然set.add(2)执行了两次但只保留一个。16.2 数组去重这是最经典的写法constarr[1,2,2,3,3,4]constresult[...newSet(arr)]console.log(result)结果[1,2,3,4]这里其实组合了前面学过的new Set(arr) ↓ 先去重 ... ↓ 展开 [] ↓ 重新变成数组所以以后看到[...newSet(arr)]直接理解成数组去重。16.3 字符串去重也可以constarr[Java,Vue,Java,MySQL,Vue]constresult[...newSet(arr)]console.log(result)结果[Java,Vue,MySQL]16.4has()判断是否存在constsetnewSet([WAIT_REPAIR,REPAIRING,COMPLETED])console.log(set.has(REPAIRING))结果true所以一些状态判断可以这样写consteditableStatusnewSet([WAIT_DIAGNOSIS,DIAGNOSING,WAIT_CUSTOMER_CONFIRM])if(editableStatus.has(order.status)){console.log(允许编辑)}相比if(order.statusWAIT_DIAGNOSIS||order.statusDIAGNOSING||order.statusWAIT_CUSTOMER_CONFIRM){}有时候清晰很多。16.5delete()和clear()删除一个constsetnewSet([1,2,3])set.delete(2)console.log(set)结果Set(2){1,3}清空set.clear()16.6 一个需要注意的地方Set对对象去重不是按“内容”判断。例如constarr[{id:1},{id:1}]constresult[...newSet(arr)]console.log(result.length)结果还是2因为{id:1}和{id:1}虽然内容一样但它们是两个不同对象。所以Set特别适合数字去重 字符串去重 状态集合 ID集合对象数组去重通常要按id自己处理。例如constusers[{id:1,name:张三},{id:1,name:张三},{id:2,name:李四}]constmapnewMap()users.forEach(item{map.set(item.id,item)})constresult[...map.values()]这个就涉及下一节。17.MapMap也是键值结构。你可以把它和普通 JS 对象对比理解。普通对象constuserMap{1:张三,2:李四}MapconstuserMapnewMap()userMap.set(1,张三)userMap.set(2,李四)取值console.log(userMap.get(1))结果张三17.1 基本 API设置map.set(key,value)获取map.get(key)判断map.has(key)删除map.delete(key)清空map.clear()数量map.size17.2 实战ID 快速查对象假设后端返回constusers[{id:1,name:张三},{id:2,name:李四},{id:3,name:王五}]如果经常需要根据 id 找用户可以先建立 MapconstuserMapnewMap()users.forEach(user{userMap.set(user.id,user)})之后constuseruserMap.get(2)console.log(user)结果{id:2,name:李四}和find有什么区别你也可以users.find(itemitem.id2)数据量不大、只查一次find完全够用。但如果你要根据 ID 查几百次、几千次那么可以先Map建立索引。然后userMap.get(id)会更合适。17.3 实战字典映射比如后端状态WAIT_REPAIRREPAIRINGCOMPLETED前端要显示待维修 维修中 已完成可以conststatusMapnewMap([[WAIT_REPAIR,待维修],[REPAIRING,维修中],[COMPLETED,已完成]])conststatusNamestatusMap.get(REPAIRING)console.log(statusName)结果维修中不过这种简单字典实际项目中普通对象也很常见conststatusMap{WAIT_REPAIR:待维修,REPAIRING:维修中,COMPLETED:已完成}然后statusMap[order.status]所以不用认为有映射就必须 Map。17.4 Map 的 key 不只是字符串普通对象的 key 主要是字符串 Symbol而Map可以直接用数字 对象 函数当 key。例如constuser1{id:1}constmapnewMap()map.set(user1,这是用户1)console.log(map.get(user1))结果这是用户1这是 Map 比普通对象灵活的地方。17.5 Map 做对象数组去重刚才那个案例constusers[{id:1,name:张三},{id:1,name:张三新版},{id:2,name:李四}]按照id去重。可以constmapnewMap()users.forEach(item{map.set(item.id,item)})constresult[...map.values()]结果[{id:1,name:张三新版},{id:2,name:李四}]为什么保留张三新版因为map.set(1,...)后面的覆盖前面的。这个思路很实用。18.for...offor...of用来遍历数组 Set Map 字符串等可迭代数据。18.1 遍历数组constusers[张三,李四,王五]for(constuserofusers){console.log(user)}输出张三 李四 王五可以理解每次从数组里拿一个值出来18.2 和传统 for 对比传统for(leti0;iusers.length;i){console.log(users[i])}for...offor(constuserofusers){console.log(user)}如果你不需要下标i那么for...of通常更加清晰。18.3 遍历对象数组constusers[{id:1,name:张三},{id:2,name:李四}]for(constuserofusers){console.log(user.id)console.log(user.name)}18.4for...of一个非常重要的优势它支持break和continue例如constusers[{id:1,enabled:true},{id:2,enabled:false},{id:3,enabled:true}]for(constuserofusers){if(!user.enabled){break}console.log(user.id)}遇到id2直接结束循环。而forEach()不能正常用break。所以如果业务是找到某种情况就停止循环for...of经常比forEach更合适。18.5continue例如for(constuserofusers){if(!user.enabled){continue}console.log(user.name)}表示禁用用户跳过继续处理下一个。18.6for...ofawait这是非常实用的一种场景。例如你需要按照顺序处理订单for(constorderoforders){awaitprocessOrder(order)}执行订单1处理完成 ↓ 订单2处理完成 ↓ 订单3处理完成属于串行。有时候业务就是要求严格按顺序执行这时候很好用。18.7forEach await的坑很多人会这样写orders.forEach(asyncorder{awaitprocessOrder(order)})然后误以为会一条一条等待。实际上不会按照你直觉中的方式控制外层等待。例如asyncfunctiontest(){orders.forEach(asyncorder{awaitprocessOrder(order)})console.log(全部完成)}很可能“全部完成”先打印了。所以如果你需要严格串行for(constorderoforders){awaitprocessOrder(order)}更加稳妥。18.8for...in和for...of不要混这两个特别容易混。例如constarr[Java,Vue,MySQL]for...offor(constitemofarr){console.log(item)}得到Java Vue MySQL也就是值。而for(constindexinarr){console.log(index)}得到0 1 2也就是key / 索引。所以可以先记for...of ↓ value for...in ↓ key对于数组遍历我通常建议优先for...of而不是for...in1618 总结你可以这样记16. Set ↓ 不重复集合 常见 数组去重 判断某值是否存在 17. Map ↓ key → value 映射 常见 ID快速查对象 字典映射 数据建立索引 18. for...of ↓ 遍历数组/集合 优势 可以 break 可以 continue 可以配合 await实战重要程度我会排Set ★★★★☆ Map ★★★☆☆ for...of ★★★★☆其中你最值得先记住的三个写法是constuniqueIds[...newSet(ids)]数组去重。constuseruserMap.get(userId)根据 key 快速拿数据。for(constitemoflist){// 处理 item}正常遍历。到这里ES6 主体其实已经差不多讲完整了。

相关新闻

LLM智能体不确定性分解与主动澄清:构建可靠AI协作的关键技术

LLM智能体不确定性分解与主动澄清:构建可靠AI协作的关键技术

1. 当LLM智能体“心里没底”时:不确定性分解与主动澄清的价值 在构建基于大语言模型的智能体时,我们常常陶醉于其强大的推理和生成能力,仿佛它无所不知。然而,任何在实际项目中深度使用过LLM智能体的人,都会遇到一个共…

2026/8/18 12:06:24 阅读更多 →
奇点大会落地指南,从识别机遇到参与技术生态构建

奇点大会落地指南,从识别机遇到参与技术生态构建

识别“待建生态”:在技术拐点前夜入局 技术生态的构建往往始于一个模糊却充满张力的时刻:某项核心技术刚刚突破临界点,应用场景初现端倪,但围绕它的协作网络尚未成型。对于技术管理者和生态建设者而言,最大的机遇不在…

2026/8/18 12:06:24 阅读更多 →
AI资讯日报 | 2026年8月17日

AI资讯日报 | 2026年8月17日

一、今日头条1. Stripe超70亿美元收购OpenRouter:AI"路由层"迎来支付巨头支付巨头Stripe宣布达成协议,以超过70亿美元的价格收购AI路由平台OpenRouter。OpenRouter通过单一API连接OpenAI、Anthropic、Google、Meta、DeepSeek等400余款模型&…

2026/8/18 12:06:24 阅读更多 →

最新新闻

基于Python+flask的商品购物系统的设计与实现毕业设计项目源码文档

基于Python+flask的商品购物系统的设计与实现毕业设计项目源码文档

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/18 12:37:51 阅读更多 →
06-Kalman隔帧轨迹预测

06-Kalman隔帧轨迹预测

Kalman 滤波与隔帧检测:轨迹如何在「无测量帧」上继续走 本文只讲一件事:当检测隔几帧才跑一次时,中间帧没有新的人体框测量,跟踪仍能给出连续轨迹,靠的是 Kalman 预测;有测量时再做 更新。 读完后应能独立…

2026/8/18 12:37:51 阅读更多 →
【学术福利 | 免费下载 | 硬核干货 | 科研必备】国际学术会议海报模板大礼包:200+高颜排版直接套用,学术会议专用海报模板,免费学术Poster海报模板,科研成果一眼出圈,科研人展示成果的快车道

【学术福利 | 免费下载 | 硬核干货 | 科研必备】国际学术会议海报模板大礼包:200+高颜排版直接套用,学术会议专用海报模板,免费学术Poster海报模板,科研成果一眼出圈,科研人展示成果的快车道

又到学术会议、答辩汇报、成果展览高峰期! 相信很多科研人都有同款困扰:论文做得很完美,却被海报排版拖了后腿。 熬夜几小时手动排版,版面杂乱、重点模糊、配色廉价、层级混乱;不懂学术规范,做出来的海报…

2026/8/18 12:37:51 阅读更多 →
理解python进程

理解python进程

进程 - CPU密集型王者 概述 操作系统资源分配的基本单位(注意这里的 资源分配 只是分配资源)硬件多核前提下,Python multiprocessing 多进程可以实现真正并行;单进程只能并发,无法并行python的多进程会 真正启动底层的…

2026/8/18 12:37:51 阅读更多 →
Mem Reduct 完整使用手册:10 分钟驯服 Windows 的内存卡顿

Mem Reduct 完整使用手册:10 分钟驯服 Windows 的内存卡顿

Mem Reduct 完整使用手册:10 分钟驯服 Windows 的内存卡顿 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …

2026/8/18 12:37:50 阅读更多 →
CLion 2025.1 深度解析:构建系统、多线程调试与AI辅助的工程实践

CLion 2025.1 深度解析:构建系统、多线程调试与AI辅助的工程实践

1. 从“编辑器”到“开发伙伴”:CLion 2025.1 的定位演进如果你和我一样,常年和 C/C 代码打交道,那么对 IDE 的选择,可能经历过一个从“能用就行”到“追求极致”的转变。早期,一个带语法高亮的编辑器加上命令行编译器…

2026/8/18 12:36:50 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →