1. 程式人生 > >es6 的Set和Map

es6 的Set和Map

console sss arr 構造 ons from true 數組的並集 無重復

//Set 和Map
類似數組 成員唯一(無重復值)

set 構造函數
var arr3=[1,2,3,3,4,5,3,5]
a,三種添加方式
const arr4=new Set();
// 1.
const arr4=new Set().add(1).add(2).add(3);
// 2. add()
arr4.add(1)
arr4.add(2)
arr4.add(3)
arr4.add(4)
//3.
const arr5=new Set([1,2,3,4])

//成員的總數size 屬性
arr5.size
const arr4=new Set([1,2,3,4]); arr4.size < 4
const arr5=new Set([1,2,3,4,5,1,2,1,3,4]);
arr5.size 結果< 5 // 去重操作 arr5 {1, 2, 3, 4, 5}
size 可以去重
b,刪除
delete(n) //布爾值 n不是索引 是成員
arr5.delete(2)
true
arr5
Set(4) {1, 3, 4, 5}
c, has() //布爾值 判斷值是否為set成員
clear() 刪除所有的成員 沒有返回值

Array.from() 將Set結構轉成數組
const arr7=new Set([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘])
let arr2=Array.from(arr7) //將set結構轉成數組
console.log(arr7) < Set(6) {"a", "b", "c", "d", "e", …}
console.log(arr2) < (6) ["a", "b", "c", "d", "e", "f"]

遍歷
for...of
for...in
const arr8=new Set([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘])
for(let list of arr8.entries()){ //keys()鍵 values()值
console.log(list)
}
< ["a", "a"] ["b", "b"] ["c", "c"] ["d", "d"] ["e", "e"] ["f", "f"]
keys() 遍歷鍵
values() 遍歷值
entries() 遍歷鍵值對

合並
let a=new Set([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘a‘,‘f‘,‘b‘]);
let b=new Set([‘w‘,‘r‘,‘e‘,‘d‘,‘e‘]);
let c=new Set([...a,...b]) // 兩個數組的並集 並去重

交集
let d=new Set([...a].filter(x=>b.has(x)));
filter的callback函數需要返回布爾值true或false. 如果為true則表示通過,為false 過濾掉
< Set(2) {"d", "e"}

***********************************

Map (對象) 鍵值對的集合
var obj={
name:"111",
age:32
}
const m=new Map();
let str ={x:111}
set() 添加成員
m.set(‘str‘,‘111‘) 對比 m.set(str,‘111‘) ‘str ’是字符串 str是{x:111}
m.get(‘str‘)
m.keys() m.values()
[[Entries]]//鍵值對的遍歷
:
Array(2)
0:{"str" => "222"}
1:{Object => "sss"}

map可以轉換成數組,也可以轉換成對象

es6 的Set和Map