ES6的Set数据结构去重复元素、求并集、交集、差集
和Map区别
Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构。集合、字典都可以存储不重复的值,集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储。
用法一
var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2 for (var elem of set) { console.log(elem) // 输出结果 1 2 3 4 8 }
用法二结合.map遍历和for循环
var set = new Set(); [1, 2, 3, 4, 2, 8, 4].map(function (elem) { set.add(elem); //遍历完用add添加至set数组中 }) for (let elem of set) { //利用for...of循环遍历出来 console.log(elem) }
扩展运算符
var set = new Set([1, 2, 3, 4, 2, 8, 4]); var arr = [...set];//扩展运算符(…)内部使用for…of循环, console.log(arr); // 输出 [1,2,3,4,8]
清空、删除
var set = new Set([1, 2, 3, 4, 2, 8, 4]); // set.clear(); //清空 直接就清空掉所有元素 set.delete(8); //删除 选中元素 var arr = [...set]; //扩展运算符(…)内部使用for…of循环, console.log(arr); //上面删除了8 输出结果为 [1,2,3,4]
判断set中是否含有
console.log(set.has(8)); //有就返回true 没有返回false
判断set中长度
console.log(set.size);
求并集、交集、差集
并集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); let union = new Set([...a,...b]); // 把上面两个对象合到一个数组中通过扩展运算符(…)内部使用for…of循环遍历出来最后通过Set去重复就可以输出了 console.log([...union]); //输出交集结果 [1,2,3,4]
交集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]);
let intersect = [...a].filter(function(elem){ //把a对象遍历出来 return b.has(elem); //把遍历出来的对象通过has判断是否与a一样,最后把一样的给返回 }); console.log(intersect); //输出结果 [2,3]
差集
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); let difference = [...a].filter(function(elem){ return !b.has(elem); //b的差集为1 首先Set已经去掉了重复的,has去掉了相同的,!取反那就是a里面b没有的,也就是差集,概念上的东西 }); console.log(difference); //输出结果 [1]
注意 用set处理后是set的对象形式 要转成数组使用需要 使用 Array.from(new Set([1,1,2,2,3])) 包裹一层再使用
或者 [...new Set([1,1,2,2,3])]
分类:
ES6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?