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)

 


作者:孟繁贵