map对象

定义:Map是一组键值对的结构,键可以为数字,数组,对象等,是ES6标准新增的数据类型,

优点:具有很快的查询速度,主要用于数据存储

创建

    var m = new Map([[1, 'zhang'], [2, 'wang'], [3, 'li']]);
    //参数为二维数组或者一个对象

常用方法

    keys 获取所有的key

    values 获取所有的value

    forEach 循环map对象

    set 添加一个新建元素到映射。

    get 返回映射中的指定元素。

    has 如果映射包含指定元素,则返回 true。

    forEach 对映射中的每个元素执行指定操作。

    delete 从映射中移除指定的元素。

    clear 从映射中移除所有元素。

属性

    size 返回map对象的长度

复制

let original = new Map([[1, 'one']]);
let clone = new Map(original);
console.log(clone.get(1)); // one
console.log(original === clone); // false. 浅比较 不为同一个对象的引用,如果直接赋值的话为浅拷贝

与数组的互相转换

    let kvArray = [["key1", "value1"], ["key2", "value2"]];

    // 使用常规的Map构造函数可以将一个二维键值对数组转换成一个Map对象
    let myMap = new Map(kvArray);

    myMap.get("key1"); // 返回值为 "value1"

    // 使用Array.from函数可以将一个Map对象转换成一个二维键值对数组
    console.log(Array.from(myMap)); // 输出和kvArray相同的数组

    // 更简洁的方法来做如上同样的事情,使用展开运算符
    console.log([...myMap]);

    // 或者在键或者值的迭代器上使用Array.from,进而得到只含有键或者值的数组
    console.log(Array.from(myMap.keys())); // 输出 ["key1", "key2"]

合并: 

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

    let second = new Map([[1, 'uno'], [2, 'dos']]);

    // Map对象同数组进行合并时,如果有重复的键值,则后面的会覆盖前面的。
    let merged = new Map([...first, ...second, [1, 'eins']]);

    console.log(merged.get(1)); // eins
    console.log(merged.get(2)); // dos
    console.log(merged.get(3)); // three

猜你喜欢

转载自blog.csdn.net/qq_41111677/article/details/113756919