我想知道在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的文档中看到,对象一直被用作Maps。是否可以使用对象来完成上述操作?我真的不喜欢这样,我也不得不使用set
和get
。
发布于 2017-04-10 08:33:33
只要键值只是字符串,就可以将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的优点是,您可以使用任意对象作为键值。在对象中,它们将被转换为字符串,而字符串通常不会导致有意义的表示。
发布于 2022-02-24 14:20:13
下面的代码有助于搜索数据并将数据推送到地图这样的对象中。但不按地图接受重复键吗?
const object1 = {
};
function pushit(keyStr,valStr,objectData)
{
objectData[keyStr] = valStr;
}
function searchPrint(keyStr)
{
if(object1.hasOwnProperty(keyStr))
{
console.log(object1[keyStr]);
}
}
pushit("sys msg" , "custom msg", object1);
pushit("sys msg1" , "custom msg1", object1);
pushit("sys msg2" , "custom msg2", object1);
searchPrint("sys msg2");
这不是地图的另一种选择,而是存储密钥和值并进行搜索。
发布于 2017-04-10 08:35:13
你当然可以,你拥有的基本上是
let obj = {
id1: {"name": "John", "address":"near"},
id2: {"name": "Úna", "address":"far away"}
}
请注意,在Map中,以及在对象中,当设置键两次时,键将相互覆盖。在严格模式下,这甚至是对象的一个错误。
https://stackoverflow.com/questions/43318273
复制相似问题