Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值
一.Map 中的 key
1.key 可以是字符串
2.key 可以是对象
3.key 可以是函数
4.key 可以是 NaN
二.Map 中的 迭代
对 Map 进行遍历,以下两个最高级。
1.for...of
var obj = {
name: "楚晚宁",
age: 32,
action: function() {
console.log("墨燃")
}
}
for(var key in obj) {
console.log(obj[key])
// 楚晚宁
// 32
// ƒ () {
// console.log("墨燃")
// }
// }
2.forEach()
var myMap = new Map();
// set() 方法为 Map 对象添加或更新一个指定了键(key)和值(value)的(新)键值对。
myMap.set(0, "zero");
myMap.set(1, "one");
// 将会显示两个 logs。 一个是 "0 = zero" 另一个是 "1 = one"
myMap.forEach(function (value, key) {
console.log(key + " = " + value);
// 0 = zero
// 1 = one
}, myMap)
三.Map 对象的操作
1.Map 与 Array的转换
var kvArray = [
["key1", "value1"],
["key2", "value2"]
];
var myMap = new Map(kvArray);
console.log(myMap);
// Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象
var outArray = Array.from(myMap);
console.log(outArray);
// 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
2.Map 的克隆
var myMap1 = new Map([
["key1", "value1"],
["key2", "value2"]
]);
var myMap2 = new Map(myMap1);
console.log(original === clone);
// 打印 false。 Map 对象构造函数生成实例,迭代出新的对象。
3.Map 的合并
var first = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
var second = new Map([
[1, 'uno'],
[2, 'dos']
]);
// 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
var merged = new Map([...first, ...second]);