1. 程式人生 > 實用技巧 >Set,Map一些常見的遍歷方法以及轉化方法

Set,Map一些常見的遍歷方法以及轉化方法

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']}