es6基礎0x011:Set

0x000 概述

Set是一個新的數據結構,和其餘語言的特性差很少,固然,做爲js中的Set,他仍是有一些屬於js的特色。數組

0x001 初始化

new Set([iterable]);

初始化一個Set有一個可選的參數,這個參數必須是一個可迭代的對象可迭代對象包括StringArrayArray-Like obejct(Arguments、NodeList)Typped ArraySetMap用戶定義的可迭代對象數據結構

  • 字符串code

    new Set('1234') // Set(4) {"1", "2", "3", "4"}
  • 數組對象

    new Set([1,2,3,4]) // Set(4) {1, 2, 3, 4}
  • arguments字符串

    function sum(){
      return new Set(arguments)
    }
    sum(1,2,3,4)  // Set(4) {1, 2, 3, 4}
  • Setit

    new Set(new Set([1,2,3,4])) // Set(4) {1, 2, 3, 4}

0x002 添加值

初始化一個Set以後,能夠繼續往裏面添加值io

let set=new Set()
set.add(1)
set.add(1)
set.add(1)
console.log(set) // Set(1) {1}

借用這個特性能夠搞不少事,好比過濾重複值console

new Set([1,1,2,3]) // Set(3){1,2,3}

可是注意,兩個相同的對象字面量是不一樣的對象,具備不一樣的引用,因此Set是沒法將兩個不一樣引用的對象標記爲同一個的,即便他們看過去是同樣的function

let a={num:1}
let b={num:1}
console.log(a===b) //false
new Set(a, b)// Set(2){{num:1},{num:2}}
let c=a
console.log(c===a)//true
new Set(a,c)// Set(1){{num:1}}

0x003 判斷是否包含

let set=new Set([1,2,3])
set.has(1) // true
set.has(4) //false

0x004 獲取數量

let set=new Set([1,2,3])
set.size //3

0x005 刪除

let set=new Set([1,2,3])
set.delete(1)// true
set.delete(1)// false

0x006 清空

let set=new Set([1,2,3])
set.clear()
console.log(set) // Set(0){}

0x007 遍歷

let set=new Set([1,2,3])
set.forEach((s)=>{console.log(s)})
// 1
// 2
// 3

0x008 獲取迭代器

let set=new Set([1,2,3])
let entries=set.entries()
console.log(entries.next().value) // [1,1]
console.log(entries.next().value) // [2,2]
console.log(entries.next().value) // [3,3]
console.log(entries.next().value) // undefined

for(let item of set){
    console.log(item)
}
// 1
// 2
// 3

0x009 獲取鍵迭代器

let set=new Set([1,2,3])
let keys=set.keys()
console.log(keys.next().value) // 1
console.log(keys.next().value) // 2
console.log(keys.next().value) // 3
console.log(keys.next().value) // undefined

for(let {key} of set){
    console.log(key)
}
// 1
// 2
// 3

0x010 獲取值迭代器

let set=new Set([1,2,3])
let values=set.values()
console.log(values.next().value) // 1
console.log(values.next().value) // 2
console.log(values.next().value) // 3
console.log(values.next().value) // undefined

for(let {value} of set){
    console.log(value)
}
// 1
// 2
// 3
相關文章
相關標籤/搜索