集合是编程中使用的一个数学概念,主要特点是组中的所有元素都不重复。1、Set的创建及其特有的属性Set的创建和Array一样,使用关键字newletexampleSet=newSet();Set只有一个属性,即size。>exampleSet=newSet([1,5,8])Set(3){1,5,8}>exampleSet.size32.Set的内置操作方法Set的内置操作方法包括:1)insert插入2)delete删除3)co??ntain包含三项//insertion>sampleSet.add(17)Set(1){17}>sampleSet.add(19)Set(2){17,19}>//delete>sampleSet.add(101)Set(3){17,19,101}>sampleSet.delete(101)true>sampleSetSet(2){17,19}>//containsundefined>sampleSet.has(19)true>sampleSet.has(101)false三、Set其他非内置但常用的操作SETremoveadd,delete,has等基本内置操作,我们常用intersection(交集A*B),isSuperSet超集,联盟等。首先交集的思路是将setA和setB中的元素组合起来,setA*setB并用contains做判断。functionintersectSets(setA,setB){letintersection=newSet();for(leteleofsetB){if(setA.has(ele)){intersection.add(ele);}}returnintersection;}letsetA=newSet([9,12,13,24]);letsetB=newSet([2,13,17,24]);console.log(intersectSets(setA,setB));///Set{2,3}/后跟unionsetA+setB只有你需要一一添加。functionunionSet(setA,setB){letunion=newSet(setA);for(letelemofsetB){union.add(elem);}returnunion;}letsetA=newSet([17,23,39,47]),setB=newSet([29,38]),setC=newSet([59]);console.log(unionSet(setA,setB));console.log(unionSet(setA,setC));其次是差集,setA-setB会将setB中的元素全部删除。函数differenceSet(setA,setB){letdifference=newSet(setA);for(leteleofsetB){difference.delete(ele);}returndifference;}letsetA=newSet([35,98,56,47]),setB=newSet([25,47]);console.log(differenceSet(setA,setB));最后是superset和subset,因为是逆运算,只需要写一个函数即可。具体实现,我们设想它的否定形式,只要setB里面有一个元素不在里面,那么就判定为非超集。functionisSuperset(setA,subset){for(letelemofsubset){if(!setA.has(elem)){returnfalse;}}returntrue;}letsetA=newSet([23,35,47,59]),setB=newSet([23,35]),setC=newSet([67]);console.log(isSuperset(setA,setB));console.log(isSuperset(setA,setC));以上操作add,has,deletefromSetInsection,union,difference,isSuperSet四个其他操作。4.特定应用的重复检查。一个系列的查重往往需要先排序,然后逐个查,但是使用Set结构就简单多了,只需要比较它的数据长度即可。functioncheckDuplicates(arr){letmySet=newSet(arr);returnmySet.size
