映射键值对:Map()

要义盘点

  • 创建映射
  • 使用自定义迭代器初始化映射
  • set方法添加键值对
  • size属性查询键值对数量
  • get与has方法查询指定键的值
  • delete与clear方法删除键值对
  • 键名为NaN或者键名为+/-0时可能会报错
  • 三种返回可迭代对象的情况

创建映射并初始化

new Map():

        let m = new Map([
            ['key1', 'val1'],
            ['key2', 'val2'],
            ['key3', 'val3']
        ]);

使用自定义迭代器初始化映射

        const m2 = new Map({
            [Symbol.iterator]: function* () {
                yield ['key1', 'val1'];
                yield ['key2', 'val2'];
                yield ['key3', 'val3'];
            }
        });

添加键值对:使用set()方法

        let m = new Map().set('key1', 'val1').set('key2', 'val2');
        console.log(m.size); // 2

查询键值对数量:size

        let m = new Map([
            ['key1', 'val1'],
            ['key2', 'val2'],
            ['key3', 'val3']
        ]);

        console.log(m.size); //3

查询:get()与has()方法

        let m = new Map([
            ['key1', 'val1'],
            ['key2', 'val2'],
            ['key3', 'val3']
        ]);

        console.log(m.has('key1')); // true
        console.log(m.get('key2')); // val2

删除:delete()与clear()方法

        let m = new Map([
            ['key1', 'val1'],
            ['key2', 'val2'],
            ['key3', 'val3']
        ]);

        m.delete('key2');
        console.log(m.size); // 2

        console.log(m.has('key2')); // false
        console.log(m.get('key2')); // undefined

        m.clear();
        console.log(m.size); // 0

键名为NaN或者键名为+/-0时可能会报错

        let key1 = 0 / ""; // NaN
        let key2 = 0 / ""; // NaN
        console.log(key1 === key2); // false

        let m = new Map().set(key1, 'val1');
        console.log(m.get(key2)); // val1
        let key1 = +0; // NaN
        let key2 = -0; // NaN
        console.log(key1 === key2); // true

        let m = new Map().set(key1, 'val1');
        console.log(m.get(key2)); // val1

返回可迭代对象:使用entries()方法

        let m = new Map().set('key1', 'val1').set('key2', 'val2').set('key3', 'val3');
        console.log(m.entries === m[Symbol.iterator]); //true
        for (let prop of m.entries()) {
            console.log(prop);
            console.log(Array.isArray(prop)); //true
        }
        // ['key1','val1']
        // ['key2','val2']
        // ['key3','val3']

返回可迭代对象:使用数组扩展运算符

        let m = new Map().set('key1', 'val1').set('key2', 'val2').set('key3', 'val3');
        for (let prop of [...m]) {
            console.log(prop);
            console.log(Array.isArray(prop)); //true

        }
        // ['key1','val1']
        // ['key2','val2']
        // ['key3','val3']

返回键或值迭代对象:使用keys()和values()方法

        let m = new Map().set('key1', 'val1').set('key2', 'val2').set('key3', 'val3');
        for (let prop of m.keys()) {
            console.log(prop);
        }
        // key1 
        // key2
        // key3
        let m = new Map().set('key1', 'val1').set('key2', 'val2').set('key3', 'val3');
        for (let prop of m.values()) {
            console.log(prop);
        }
        // val1 
        // val2
        // val3
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 6 跟踪用户动作 在上一章中,你用jQuery实现了AJAX视图,并构建了一个分享其它网站内容的JavaScrip...
    lakerszhy阅读 1,342评论 0赞 1
  • 现行的编程语言都会提供几种类型的数据集合支持,在ES6 之前,JavaScript 仅提供了对数组的支持。在以数组...
    贵在随心阅读 4,102评论 1赞 10
  • 如果把写程序比喻成盖房子,那么各种变量相当于各种建筑材料,建材包括砖头、水泥、沙子等,程序变量也分为不同的数据类...
    FreeBook2019阅读 1,148评论 0赞 0
  • SET ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个...
    whowhenhowxxx阅读 323评论 0赞 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 11,081评论 0赞 11

友情链接更多精彩内容