Map 对象

173 阅读1分钟

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]);