打赏

ES6 Map

1、Map结构

Map为“键值对”的数据结构

const m = new Map();

 

2、构造函数

作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

const map = new Map([
  ['name', '张三'],
  ['title', 'Author']
]);

map.size // 2
map.has('name') // true
map.get('name') // "张三"
map.has('title') // true
map.get('title') // "Author"

 

3、键

 Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。

如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键

 

4、set

set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。

set结构的新增成员为add方法,其他方法如has、delete、clear一样。

 

5、get(key)


6、遍历方法

 

keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。

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"

 

7、转为数组

Map 结构转为数组结构,比较快速的方法是使用扩展运算符(...)。

 

 

const map = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);

[...map.keys()]

 

set结构也是这样转换为数组。

 

8、forEach

map.forEach(function(value, key, map) {
  console.log("Key: %s, Value: %s", key, value);
});

注:forEach的回调函数第一个参数为value,第二个为key。

set结构具有foreach方法。

 

总结:与set结构的方法区别有构造函数和新增函数(add/set)

 

posted @ 2017-12-12 17:07  孟繁贵  阅读(174)  评论(0编辑  收藏  举报
TOP