自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript之集合Set操作的3類10種方法

開發(fā) 前端
集合Set是數(shù)學(xué)上的概念用在編程上,主要特點(diǎn)是組內(nèi)的所有元素均不重復(fù)。本篇就給大家介紹Set集合操作的所有方法。

[[402110]]

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

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

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

  1. let exampleSet = new Set(); 

Set只有一項(xiàng)屬性即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包含三項(xiàng)

  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 只需要逐個(gè)添加進(jìn)來即可。

  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)); 

 最后是超集和子集,因?yàn)榛槟孢\(yùn)算,只需要寫一個(gè)函數(shù)即可,具體實(shí)現(xiàn),我們構(gòu)思其否定形式,只要setB中有一個(gè)元素而不在其內(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 四種操作。

四、具體應(yīng)用之?dāng)?shù)列查重

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

  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集合操作的所有方法。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2025-01-15 10:46:23

開發(fā)JavaScript集合

2013-01-07 10:44:00

JavaScriptjQueryJS

2018-12-19 19:30:46

JavaScript創(chuàng)建對(duì)象前端

2020-11-10 10:23:25

IT成本CIO高級(jí)分析師

2014-06-23 16:56:46

2022-09-02 14:29:01

JavaScrip數(shù)組屬性

2020-06-04 08:17:44

JavaScript延展操作運(yùn)算符開發(fā)

2010-12-02 08:12:16

2013-07-23 10:50:24

C程序

2019-02-16 05:00:49

物聯(lián)網(wǎng)IOT工業(yè)物聯(lián)網(wǎng)

2020-05-15 08:28:18

二進(jìn)制文件binLinux

2010-05-27 18:18:14

MySQL修改root

2017-06-09 13:51:42

Linux命令刪除文件

2016-03-31 14:16:56

2019-04-02 09:53:22

2020-10-09 09:07:21

Python模塊重載開發(fā)

2011-04-08 09:16:12

JavaScript

2020-08-01 16:19:13

JavaScript字符串開發(fā)

2021-08-18 11:55:25

Python函數(shù)代碼

2019-10-24 08:52:23

Linux壓縮文件歸檔
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)