我想知道在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的文档中已经阅读过,对象历来被用作地图。以上是否可以使用对象完成?我真的不喜欢我必须使用set
和get
。
答案 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和对象中,当设置键两次时,键会互相覆盖。在严格模式下,这甚至会成为对象的错误。