[英]How to add values to specific key in javascript map?
我正在寻找一种将多个值添加到 map 中的同一个键的解决方案
下面是要求:
objs = new Map<string,obj>()
objs.set(obj.name,obj)
key 和 value 的值如下所示:
[pen,{pen,red,2}],[pencil,{pencil,yellow,1}],[pen,{pen,bule,3}]
所以我根据名称设置值。 由于我正在尝试在 map 中设置值,因此重复键会覆盖笔键的值。 现在我想将 append 重复键的值复制到现有键。 有没有办法在 javascript 中实现它?
我期待结果如下:
[pen,[{pen.red,2},{pen,blue,3}]],[pencil,{pencil,yellow,1}]
有人可以帮我弄这个吗?
理想情况下,您遇到的不是问题,因为Map
的键是唯一的。
到 append 你可以做的是,把你的 object 累加到最后。
像这样的东西
let obj = new Map();
let objToInsert = { ...add all the objects possible here };
obj.set(name, objectToInsert);
这样,您可以拥有其中列出的多个对象的键。
如果您正在使用一些循环并稍后添加项目,您也可以尝试这样的事情
let obj = new Map();
let name = "parent";
let objToInsert = { test: "value" };
obj.set(name, objectToInsert);
someArray.forEach((_, index) => {
obj.set(name, { ...obj.get(name), [index]: "test" });
});
这意味着您必须从Map
中get
项目,然后将其与新数据一起再次插入以将其附加。
希望能帮助到你
您需要检查是否有带有所需key
的条目。 检查这是否是一个数组,如果不是创建一个,添加新值并保存它。
let existingEntry = objs.get(obj.name)
if (!existingEntry) {
objs.set(obj.name, [obj])
} else {
if (!Array.isArray(existingEntry)) { //this may not be needed if you have full control over the map
existingEntry = [existingEntry]
}
existingEntry.push(obj)
objs.set(obj.name, existingEntry)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.