首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替代es6映射

替代es6映射
EN

Stack Overflow用户
提问于 2017-04-10 08:30:37
回答 3查看 9.9K关注 0票数 0

我想知道在javascript/ES6中是否可以用其他方式完成以下操作:

代码语言:javascript
运行
复制
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。是否可以使用对象来完成上述操作?我真的不喜欢这样,我也不得不使用setget

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-10 08:33:33

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

代码语言:javascript
运行
复制
// 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的优点是,您可以使用任意对象作为键值。在对象中,它们将被转换为字符串,而字符串通常不会导致有意义的表示。

票数 4
EN

Stack Overflow用户

发布于 2022-02-24 14:20:13

下面的代码有助于搜索数据并将数据推送到地图这样的对象中。但不按地图接受重复键吗?

代码语言:javascript
运行
复制
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");

这不是地图的另一种选择,而是存储密钥和值并进行搜索。

票数 1
EN

Stack Overflow用户

发布于 2017-04-10 08:35:13

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

代码语言:javascript
运行
复制
let obj = {
    id1: {"name": "John", "address":"near"},
    id2: {"name": "Úna", "address":"far away"}
}

请注意,在Map中,以及在对象中,当设置键两次时,键将相互覆盖。在严格模式下,这甚至是对象的一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43318273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档