日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaScript之集合Set操作的3類10種方法

集合Set是數(shù)學上的概念用在編程上,主要特點是組內(nèi)的所有元素均不重復。

繁昌ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

一、Set 的創(chuàng)建及其唯一的屬性

Set的創(chuàng)建與Array等相同,使用關(guān)鍵詞new

 
 
 
  1. let exampleSet = new Set(); 

Set只有一項屬性即size.

 
 
 
  1. > exampleSet = new Set([1, 5, 8]) 
  2. Set(3) { 1, 5, 8 } 
  3. > exampleSet.size 

 二、Set的內(nèi)建操作方法

Set內(nèi)建的操作方法包括:1)插入insertion 2) 刪除 deletion 3) contain包含三項

 
 
 
  1. // insertion  
  2. > sampleSet.add(17) 
  3. Set(1) { 17 } 
  4. > sampleSet.add(19) 
  5. Set(2) { 17, 19 } 
  6. > // delete 
  7. > sampleSet.add(101) 
  8. Set(3) { 17, 19, 101 } 
  9. > sampleSet.delete(101) 
  10. true 
  11. > sampleSet 
  12. Set(2) { 17, 19 } 
  13. > // contains 
  14. undefined 
  15. > sampleSet.has(19) 
  16. true 
  17. > sampleSet.has(101) 
  18. false 

 三、Set其他非內(nèi)建但常用的操作

SET除去add, delete, has等基礎(chǔ)的內(nèi)建操作之外,我們較為常用的是 intersection(交集A*B),isSuperSet超集,Union并集等。

首先,交集的思路就是將setA與setB中的元素,setA*setB 并用contains做出判斷。

 
 
 
  1. function intersectSets(setA, setB) { 
  2.   let intersection = new Set(); 
  3.   for (let ele of setB) { 
  4.     if (setA.has(ele)) { 
  5.       intersection.add(ele); 
  6.     } 
  7.   } 
  8.   return intersection; 
  9. let setA = new Set([9, 12, 13, 24]); 
  10. let setB = new Set([2, 13, 17, 24]); 
  11. console.log(intersectSets(setA, setB)); /// Set {2, 3}/ 

 其次是并集setA + setB 只需要逐個添加進來即可。

 
 
 
  1. function unionSet(setA, setB) { 
  2.     let union = new Set(setA); 
  3.     for (let elem of setB) { 
  4.         union.add(elem); 
  5.     } 
  6.     return union; 
  7. let setA = new Set([17, 23, 39, 47]),  
  8. setB = new Set([29, 38]), 
  9. setC = new Set([59]); 
  10. console.log(unionSet(setA,setB));  
  11. console.log(unionSet(setA,setC));  

 接著是差集,setA-setB將setB中的元素全部都刪除。

 
 
 
  1. function differenceSet(setA, setB) { 
  2.     let difference = new Set(setA); 
  3.     for (let ele of setB) { 
  4.         difference.delete(ele); 
  5.     } 
  6.     return difference; 
  7. let setA = new Set([35, 98, 56, 47]), 
  8.     setB = new Set([25, 47]); 
  9. console.log(differenceSet(setA, setB)); 

 最后是超集和子集,因為互為逆運算,只需要寫一個函數(shù)即可,具體實現(xiàn),我們構(gòu)思其否定形式,只要setB中有一個元素而不在其內(nèi),則判定為非超集。

 
 
 
  1. function isSuperset(setA, subset) { 
  2.   for (let elem of subset) { 
  3.     if (!setA.has(elem)) { 
  4.       return false; 
  5.     } 
  6.   } 
  7.   return true; 
  8. let setA = new Set([23, 35, 47, 59]), 
  9.   setB = new Set([23, 35]), 
  10.   setC = new Set([67]); 
  11. console.log(isSuperset(setA, setB)); 
  12. console.log(isSuperset(setA, setC));  

 以上從Set內(nèi)建操作 add, has, delete之外的 insection, union, difference, isSuperSet 四種操作。

四、具體應用之數(shù)列查重

數(shù)列查重往往需要先排序再逐個檢查,但是用Set結(jié)構(gòu)就簡單多了,只需要比較其數(shù)據(jù)長度即可。

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

 五、總結(jié)

以上就是Set集合操作的所有方法。


名稱欄目:JavaScript之集合Set操作的3類10種方法
文章分享:http://www.5511xx.com/article/djdiidg.html