• Map集合



    ES6学习系列 😃

    ES6中的Map类型是一种储存着许多键值对的有序列表,其中的键名和对应的值支持所有的数据类型。键名的等价性判断是通过调用Object.is()方法来实现的,所以数字5和字符串"5"会被判定为两种类型,可以分别作为独立的两个键出现在程序中。这一点与对象中不一样,因为对象的属性名总会被强制转换为字符串类型。

    基础使用

    通过new Map创建,调用set方法传入键名和对应的值,如果要从Map集合中获取信息,可以调用get方法。

    let map = new Map();
    map.set("title", "Understanding ECMAScript 6");
    map.set("year", 2016);
    // Understanding ECMAScript 6
    console.log(map.get("title"));
    // 2016
    console.log(map.get("year"));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在对象中,无法用对象作为对象属性的键名,但在Map集合中,却可以

    let map = new Map(),
        key1 = {}, key2 = {};
    map.set(key1, 5);
    map.set(key2, 42);
    // 5
    console.log(map.get(key1));
    // 42
    console.log(map.get(key2));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    Map集合支持的方法

    在设计语言新标准时,委员会为Map集合与Set集合设计了如下3个通用的方法

    • has(key) 检测指定的键名在Map集合中是否已经存在
    • delete(key) 从Map集合中移除指定键名及其对应的值
    • clear() 移除Map集合中的所有键值对
    let map = new Map();
    map.set("name", "Nicholas");
    map.set("age", 25);
    // 2
    console.log(map.size);
    // true
    console.log(map.has("name"));
    // Nicholas
    console.log(map.get("name"));
    // true
    console.log(map.has("age"));
    // 25
    console.log(map.get("age"));
    
    // 删除元素
    map.delete("name");
    // false
    console.log(map.has("name"));
    // undefined
    console.log(map.get("name"));
    // 1
    console.log(map.size);
    
    // 删除元素
    map.clear();
    // false
    console.log(map.has("age"));
    // undefined
    console.log(map.get("age"));
    // 0
    console.log(map.size);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    Map集合的初始化方法

    可以向Map构造函数传入数组来初始化一个Map集合,这一点与Set集合相似。数组中的每一个元素都是一个子数组,子数组中包含一个键值对的键名与值两个元素。因此,整个Map集合中包含的全是这样的两元素数组:

    let map = new Map([["name","Nicholas"],["age",25]]);
    // true
    console.log(map.has("name"));
    // Nicholas
    console.log(map.get("name"));
    // true
    console.log(map.has("age"));
    // 25
    console.log(map.get("age"));
    // 2
    console.log(map.size);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Map集合的forEach方法

    Map集合的forEach方法与Set、数组的forEach方法类似,回调函数接受三个参数

    • Map集合中下一次索引的位置
    • 值对应的键名
    • Map集合本身
    let map = new Map([["name", "Nicholas"], ["age", 25]]);
    map.forEach(function (value, key, ownerMap) {
        console.log(key + " = " + value);
        console.log(ownerMap === map);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    执行结果如下

    name = Nicholas
    true
    age = 25
    true
    
    • 1
    • 2
    • 3
    • 4

    遍历过程中,会按照键值对插入Map集合的顺序将相应信息传入forEach()方法的回调函数,而在数组中,会按照数值型索引值的顺序一次传入回调函数。

  • 相关阅读:
    shell 实例:检查default路由的存在
    Python yield 使用浅析
    解决DCNv2不能使用高版本pytorch编译的问题
    方舟开服工具、服务器教程win
    公众号标签
    origin 上下图标
    Java连接Redis并操作Redis中的常见数据类型
    论文生成器(论文、文献综述、开题报告……),Java、Python、C++
    一分钟带你了解网络安全(如何自学)
    智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
  • 原文地址:https://blog.csdn.net/m0_37607945/article/details/127837627