2017-04-10 57 views
0

我想知道如果下面就可以在JavaScript/ES6做另一种方式:替代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和对象历来被用作地图文档中的已阅读地图。上述可以使用对象完成吗?我真的不喜欢我必须使用setget

回答

2

只要键值仅仅是字符串,只需更换一个简单的对象映射(你已经做到了与值,您提供):

// 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); 

一个地图的优势是,你可以使用任意对象作为关键值。在那些将被转换为字符串的对象中,这往往不会导致有意义的表示。

0

当然可以,你有什么基本上是

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

注意,以及在地图和对象也设置两次键时,钥匙会互相覆盖。在严格模式下,这甚至会成为对象的错误。

+0

究竟会发生什么错误? – 2017-04-10 08:49:06

+0

设置密钥两次是严格模式下的错误@torazaburo – baao

+0

是否在单个对象字面值中包含两次相同的密钥?我不认为这是一个错误。至少不是当我尝试它时。 – 2017-04-10 08:54:41