javascript Object 与ES6 Map 对比

Object 的键名key只可以是String 或者数字,或者Symbol,而Map的key它可以是任何类型。

一、取出Objeect 和Map 的键名Key

我们通常取出Object的键名用for in 循环,

例如:let simpleObj = {

       'keyOne' :  '键值一',

       'keyTwo' :  '键值二',

       'keyThree' :  '键值三'

       }

for (const key in simpleObj) {
            console.log(key)
        }
输出结果:keyOne、keyTwo、keyThree
··········································································································································
const m = new Map([
      ['xkey', 1],
      ['ykey', 2]
    ]);
    for (const iterator of m) {
      console.log(iterator[0])
    }
输出结果:xkey   ykey
··········································································································································
    m.forEach(element => {
      console.log(element)
    });
 输出结果:1,2

二、读取/删除元素时的区别

Obj:

//或者使用 ES2020 新增的条件属性访问表达式来读取
    o?.x; // 1
    o?.['y']; // 2
    //删除
    delete o.b;
Map:
const o = {
      x: 'centos',
      y: 'nbclass'
    };
    //读取
    o.x; // centos
    o['y']; // nbclass
    //新增/修改
    o.x = 1;
    o['y'] = 2;
    const mappp = new Map();
    //新增/修改
    mappp.set('x', 1);
    mappp.set('b', 3);
    console.log(mappp);
输出结果:{"x" => 1, "b" => 3}
    //读取
    mappp.get('x');
    console.log(mappp);
输出结果:Map(2) {"x" => 1, "b" => 3}
    //删除
    mappp.delete('b');
    console.log(mappp);
输出结果:Map(1) {"x" => 1}


posted @ 2021-05-18 14:48  fade1108  阅读(243)  评论(0)    收藏  举报