es6 Map的替代方案

时间:2017-04-10 08:30:38

标签: javascript ecmascript-6

我想知道在javascript / es6中是否可以采用另一种方式:

var myMap = new Map();
myMap.set("id1", {"name": "John", "address":"near"} );
myMap.set("id2", {"name": "Úna", "address":"far away"} );

myMap.set("id2", {"name": "Úna", "address":"near"} );

我是javascript的新手,并且在Map的文档中已经阅读过,对象历来被用作地图。以上是否可以使用对象完成?我真的不喜欢我必须使用setget

2 个答案:

答案 0 :(得分:4)

只要键值只是字符串,你就可以用普通对象替换一个Map(你已经用你提供的值替换了):

// init object
let myMap = {
  "id1": {"name": "John", "address":"near"},
  "id2": {"name": "Úna", "address":"far away"}
};

// add/replace
myMap.id2 = {"name": "Úna", "address":"near"};

// access
console.log( myMap.id2 );

Map的优点是,您可以使用任意对象作为键值。在对象中,那些将被转换为字符串,这通常不会产生有意义的表示。

答案 1 :(得分:0)

当然你可以,你拥有的基本上是

let obj = {
    id1: {"name": "John", "address":"near"},
    id2: {"name": "Úna", "address":"far away"}
}

请注意,同样在Map和对象中,当设置键两次时,键会互相覆盖。在严格模式下,这甚至会成为对象的错误。