温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript中怎么利用Set操作集合

发布时间:2021-06-15 11:15:06 阅读:196 作者:Leah 栏目:web开发
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

JavaScript中怎么利用Set操作集合,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、Set 的创建及其唯一的属性

Set的创建与Array等相同,使用关键词new

let exampleSet = new Set();

Set只有一项属性即size.

> exampleSet = new Set([158]) Set(3) { 158 } > exampleSet.size 3

 二、Set的内建操作方法

Set内建的操作方法包括:1)插入insertion 2) 删除 deletion 3) contain包含三项

// insertion  > sampleSet.add(17Set(1) { 17 } > sampleSet.add(19Set(2) { 1719 } > // delete > sampleSet.add(101Set(3) { 1719101 } > sampleSet.delete(101) true > sampleSet Set(2) { 1719 } > // contains undefined > sampleSet.has(19) true > sampleSet.has(101) false

 三、Set其他非内建但常用的操作

SET除去add, delete, has等基础的内建操作之外,我们较为常用的是  intersection(交集A*B),isSuperSet超集,Union并集等。

首先,交集的思路就是将setA与setB中的元素,setA*setB 并用contains做出判断。

function intersectSets(setA, setB) {   let intersection = new Set();   for (let ele of setB) {     if (setA.has(ele)) {       intersection.add(ele);     }   }   return intersection; } let setA = new Set([9121324]); let setB = new Set([2131724]); console.log(intersectSets(setA, setB)); /// Set {2, 3}/

其次是并集setA + setB 只需要逐个添加进来即可。

function unionSet(setA, setB) {     let union = new Set(setA);     for (let elem of setB) {         union.add(elem);     }     return union; } let setA = new Set([17233947]),  setB = new Set([2938]), setC = new Set([59]); console.log(unionSet(setA,setB));  console.log(unionSet(setA,setC));

接着是差集,setA-setB将setB中的元素全部都删除。

function differenceSet(setA, setB) {     let difference = new Set(setA);     for (let ele of setB) {         difference.delete(ele);     }     return difference; } let setA = new Set([35985647]),     setB = new Set([2547]); console.log(differenceSet(setA, setB));

最后是超集和子集,因为互为逆运算,只需要写一个函数即可,具体实现,我们构思其否定形式,只要setB中有一个元素而不在其内,则判定为非超集。

function isSuperset(setA, subset) {   for (let elem of subset) {     if (!setA.has(elem)) {       return false;     }   }   return true; } let setA = new Set([23354759]),   setB = new Set([2335]),   setC = new Set([67]); console.log(isSuperset(setA, setB)); console.log(isSuperset(setA, setC));

以上从Set内建操作 add, has, delete之外的 insection, union, difference, isSuperSet  四种操作。

四、具体应用之数列查重

数列查重往往需要先排序再逐个检查,但是用Set结构就简单多了,只需要比较其数据长度即可。

function checkDuplicates(arr) {     let mySet = new Set(arr);     return mySet.size < arr.length; } checkDuplicates([11,27,38,49,52]); // false checkDuplicates([11,11,28,38,49,56]); // true

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://www.toutiao.com/i6966782490971406859/

AI

开发者交流群×