Set數據結構基本介紹


構造

const set = new Set([1, 2, 3, 4, 4]);

 可接受的參數為所有具有iterable 接口的數據  

 

特性:

 類似數組,無重復值。

const set = new Set([1, 2, 3, 4, 4]);
[...set] //1,2,3,4

 注意點:

       1.成員值之間的重復值判斷類似於‘===’,但是多個NaN會被判斷為相等

const set = new Set([1,NaN, NaN, 4, '4']);
console.log(...set) 

      2.兩個對象總不相等 

const set = new Set([{}, {},{name:'shyno'},{name:'shyno'}]);
console.log(...set)

  

     3.無鍵只有值

const arr = [1,2,2,3,4,5,5,6]
let obj = {name:'shyno'}
const set = new Set(arr);
const setArr = Array.from(set)
console.log(Object.keys(arr),Object.keys(obj),Object.keys(set))

  

          (可以看出set的鍵是空的)

  4.Set並不是數組

const set = new Set([{}, {},{name:'shyno'},{name:'shyno'}]);
document.write(set[0])               //undefined
console.log(set.concat([1,2]))     //set.concat is not a function 

         (1)Set可以用於數組去重,但是,需要把Set再轉成數組

const set = new Set([1,2,3,3,4,4,5]);
const arr = Array.from(set)
console.log(arr[0],arr.concat(['1','2']))

  (2)Set也可以用於字符串去重

const set = new Set('aabbccdee');
const arr = Array.from(set)
console.log(arr[0],arr.concat(['1','2']))

  

  (3)其他具有iterable 接口的數據也可以用這種方法去掉重復的值

 

 

屬性和方法

      構造函數:Set.prototype.constructor

console.log(Set.prototype.constructor)

  

  長度/尺寸/成員總數:Set.prototype.size

const arr = [1,2,2,3,4,5,5,6]
const set = new Set(arr);
const setArr = Array.from(set)
console.log('原數組長度',arr.length,'set的成員總數',set.size,'set轉數組之后的長度',setArr.length)

  

        添加成員:add()------添加某個值,返回 Set 結構本身

const arr = [1,2,2,3,4,5,5,6]
const set = new Set(arr);
set.add(2)
const setArr = Array.from(set)
console.log(set,set.add('shyno'))

  

      (注意這里打印出來的結果一樣,說明它的返回值就是set自身)

                重復的不加,不同的數據類型也可以加

  刪除成員:delete()------刪除某個值,返回一個布爾值,表示刪除是否成功

const arr = [1,2,2,3,4,5,5,6]
const set = new Set(arr);
const setArr = Array.from(set)
console.log(set)
console.log(set .delete(2))
console.log(set)
console.log(set .delete(2))

  

     (set無重復值,所以同樣的操作,只有第一次會成功)

  判斷存在否:has(value)-----返回一個布爾值,表示該值是否為Set的成員

const arr = [1,2,2,3,4,5,5,6]
const set = new Set(arr);
const setArr = Array.from(set)
console.log(set)
console.log(set .has(2))
console.log(set .delete(2))
console.log(set .has(2))
console.log(set)

  

  

     (這里明明打印set的時候沒有2,但是has(2)確實true,刪除操作后得到了false)

   清空成員:clear()-----清除所有成員,沒有返回值

const arr = [1,2,2,3,4,5,5,6]
const set = new Set(arr);
const setArr = Array.from(set)
console.log(set)
console.log(set .clear())
console.log(set .delete(2))
console.log(set.add(2))
console.log(set .has(2))
console.log(set)

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM