Web端 es6(基礎八)set-map資料結構
阿新 • • 發佈:2019-02-07
容器的區別
set
不允許重複 如果相同 不進行新增
筆記
set 的概念
let set = new Set();
set.add(7)
set.add(5)
set.add(5)
console.log(set)
// 輸出結果
Set(2) {7, 5}
// 另外一種方法
let arr = [1,2,3,4,5,5]
let list = new Set(arr)
console.log(list)
// 輸出結果
Set(5) {1, 2, 3, 4, 5}
// 型別不一致 也不會判重
let arr = [4,5,'5']
let list = new Set(arr)
console.log(list)
// 輸出結果
Set(3) {4, 5, "5"}
set 的常用操作
let arr = ['add','delete','clear','has']
let sets = new Set(arr)
console.log('has', sets.has('add'))
console.log('delete', sets.delete('add'),sets)
sets.clear()
console.log(sets)
// 輸出結果
has true
delete true Set(3) {"delete", "clear" , "has"}
Set(0) {}
WeakSet
其實這個 還涉及垃圾 回收機制, 這裡不做掩飾
只掩飾 與 set的差異
let person1 = new Person("張三");
let person2 = new Person("李四");
let weakList = new WeakSet()
// 只能新增結構
weakList.add(person1)
weakList.add(person2)
console.log(weakList)
// 輸出結果
WeakSet {Person, Person}
Map的使用
let map = new Map();
map.set("123",4)
console.log(map,`value = ${map.get('123')}`)
// 輸出結果
Map(1) {"123" => 4} "value = 4"
let map = new Map([['a',123],['b',456]]);
console.log("map args",map)
// 輸出結果
map args Map(2) {"a" => 123, "b" => 456}
map 常用操作
與 set的使用一致,這裡就不再繼續做demo了
WeakMap 的使用
key 值 跟 Set一樣 依舊要是個物件
let weakMap = new WeakMap();
weakMap.set({},"啦啦啦啦")
console.log(weakMap)