Set,Map一些常見的遍歷方法以及轉化方法
阿新 • • 發佈:2020-10-07
set的一些遍歷操作:
keys()
:返回鍵名的遍歷器values()
:返回鍵值的遍歷器entries()
:返回鍵值對的遍歷器forEach()
:使用回撥函式遍歷每個成員
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.values()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.entries ()) {
console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
forEach的使用
let set = new Set([1, 2, 3]);
set.forEach((value, key) => console.log(value * 2) )
// 2
// 4
// 6
Map的一些遍歷方法
keys()
:返回鍵名的遍歷器。values()
:返回鍵值的遍歷器。entries()
:返回所有成員的遍歷器。forEach()
:遍歷Map的所有成員
let map = new Map([
['F', 'no'],
['T', 'yes'],
]);
for (let key of map.keys ()) {
console.log(key);
}
// "F"
// "T"
for (let value of map.values()) {
console.log(value);
}
// "no"
// "yes"
for (let item of map.entries()) {
console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"
// 或者
for (let [key, value] of map.entries()) {
console.log(key, value);
}
// "F" "no"
// "T" "yes"
// 等同於使用map.entries()
for (let [key, value] of map) {
console.log(key, value);
}
// "F" "no" // "T" "yes"
返回所有成員的遍歷器的時候推薦最後一種方法
延展性探討
set與陣列的轉化
陣列轉換成set結構只需要將陣列加入到set建構函式引數中例項化即可
set集合轉換成陣列,可簡單的使用擴充套件運算子...,也可使用Array.from()的新方法
var items = new Set([1, 2, 3, 4, 5]);
var array1 = Array.from(items);
var array2 = [...items]
array1 // [1, 2, 3, 4, 5]
array2 // [1, 2, 3, 4, 5]
map與陣列的轉化
與Set一樣,Map和陣列直接也可以相互轉換
使用擴充套件運算子...可以將Map轉換為陣列
let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);
[...myMap]
// [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ]
例項化Map建構函式時傳入引數可將陣列轉換為Map物件
new Map([[true, 7], [{foo: 3}, ['abc']]])
// Map {true => 7, Object {foo: 3} => ['abc']}