首页 > 解决方案 > 在 Javascript 中的地图中获取和设置值

问题描述

我试图获取和设置地图的值,比如 JavaScript 中的对象。我成功地做到了这一点。我仍然怀疑这是否是正确的方法,还是我的代码会在任何时候中断?

    m = new Map();
    Map {}
    > m.set('a', 1) //set value
    Map { 'a' => 1 }
    > m.get('a') //get it
    1
    > m['b'] = 2 //try using more convenient [] notation
    2
    > m['b'] //it works!
    2

虽然这适用于这个特定场景或其他场景,但是否存在使用 m['b'] 获取地图会失败的场景?

标签: javascript

解决方案


他们不一样。当您使用括号表示法(或点表示法)而不是.setand.get时,您使用的是Map作为普通对象,而不是Map. 例如,如果您稍后尝试使用 访问bm.get它将不起作用,因为b它不是map 中的键,而是对象的属性m

const m = new Map();
m.set('a', 1) //set value
m['b'] = 2 //try using more convenient [] notation
m['b'] //it works!
console.log(m.get('b')) // ...or not

可以使用 aMap作为这样的对象,并获取/设置任意属性而不是.get.set方法,但这会很混乱。最好在适当的时候使用普通对象,或者使用Mapwith.get.set方法 - 但不要混合使用这两种语法。


推荐阅读