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']}
 
 
 
 
原文地址:https://www.cnblogs.com/zhilu/p/13776822.html