new set([ iterable ])
可以傳遞乙個可迭代物件,它的所有元素將被新增到新的set
中。如果不指定此引數或其值為null
,則新的set
為空。
屬性操作方法遍歷方法let s = new set([ 1, 2, 3 ]) // set(3)
let s2 = new set() // set(0) {}
let s3 = new set(null /* or undefined */) // set(0) {}
let s = new set()
s.add(1) // set(1)
.add(2) // set(2)
.add(nan) // set(2)
.add(nan) // set(2)
// 注意這裡因為新增完元素之後返回的是該set物件,所以可以鏈式呼叫
// nan === nan 結果是false,但是set中只會存乙個nan
s.has(1) // true
s.has(nan) // true
s.size // 3
s.delete(1)
s.has(1) // false
s.size // 2
s.clear()
s // set(0) {}
let s2 = new set([ 's', 'e', 't' ])
s2 // setiterator
s2.keys() // setiterator
s2.values() // setiterator
s2.entries() // setiterator
// log
[ ...s2 ] // ["s", "e", "t"]
[ ...s2.keys() ] // ["s", "e", "t"]
[ ...s2.values() ] // ["s", "e", "t"]
[ ...s2.entries() ] // [["s", "s"], ["e", "e"], ["t", "t"]]
s2.foreach(function (value, key, set) )
// s s set(3) window
// e e set(3) window
// t t set(3) window
s2.foreach(function () , )
// //
// for (let value of s2)
// s
// e
// t
for (let value of s2.entries())
// ["s", "s"]
// ["e", "e"]
// ["t", "t"]
除此之外我們還需要二個輔助方法class set
get size () {}
has () {}
add () {}
delete () {}
clear () {}
foreach () {}
keys () {}
values () {}
entries () {}
[ symbol.iterator ] () {}
}
1、forof
,模擬for of
行為, 對迭代器物件進行遍歷操作。
2、const forof = (iterable, callback, ctx) =>
}
iterator
迭代器,更多迭代器資訊請看iterator,我們這裡面用迭代器是為了讓我們的set的values()
等可進行遍歷。
class iterator
next ()
}[ symbol.iterator ] ()
}
class set is not iterable`);
// 迴圈可迭代物件,初始化
forof(iterable, value => this.add(value));}}
get size()
has(val)
add(val)
return this;
}delete(val)
return false;
}clear()
foreach(cb, arg) )
}keys()
values()
entries()
[symbol.iterable]()
}
模擬過程中可能會有相應的錯誤,也不是和原生的實現完全一致。僅當學習之用.
es6的 set 學習總結
set 集合 一直以來,js只能使用陣列和物件來保持多個資料,缺乏像其他語言那樣擁有豐富的結合型別 因此,es6 新增了兩種結合型別 set 和 map 用於不同場景發揮作用。1.set 用於存放不能重複的資料 如何建立乙個set 如 const sets newset 建立乙個沒有任何內容的set...
ES6學習筆記 Set和Map
set類似於陣列,但是沒有重複的值,成員是唯一的。set例項有兩個屬性 set.prototype.constructor指向set本身,set.prototype.size返回set例項的成員總數。set例項的方法分為兩大類 操作方法 用於運算元據 和遍歷方法 用於遍歷成員 array.from方...
es6 模組化(es6學習筆記07)
模組化 是指將乙個大的程式檔案,拆分成許多小的檔案,然後將小檔案組合起來。功能模組主要由兩個命令構成 export和import 1.2.1 export 使用 1.分別暴露 export let book 西遊記 export function like 2.統一暴露 let book 西遊記 f...