如何向javascript映射中的特定键添加值?

如何向javascript映射中的特定键添加值?,javascript,node.js,Javascript,Node.js,我正在寻找一种解决方案,将多个值添加到地图中的同一个键 要求如下: objs = new Map<string,obj>() objs.set(obj.name,obj) 因此,我根据名称设置值。因为我正在尝试在地图中设置值,所以重复键将覆盖笔键的值。 现在我想将复制键的值附加到现有键上。有没有办法用javascript实现它 我期待的结果如下: [pen,[{pen.red,2},{pen,blue,3}]],[pencil,{pencil,yellow,1}] 有人能帮我吗?

我正在寻找一种解决方案,将多个值添加到地图中的同一个键

要求如下:

objs = new Map<string,obj>()
objs.set(obj.name,obj)
因此,我根据名称设置值。因为我正在尝试在地图中设置值,所以重复键将覆盖笔键的值。 现在我想将复制键的值附加到现有键上。有没有办法用javascript实现它

我期待的结果如下:

[pen,[{pen.red,2},{pen,blue,3}]],[pencil,{pencil,yellow,1}]

有人能帮我吗?

理想情况下,您遇到的不是问题,因为
地图的键是唯一的

要附加您可以做的是,累加您的对象并在最后设置它

像这样的

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" });
});
这意味着您必须
地图中获取
项目
,并将其与新数据一起再次插入以附加


希望有帮助

您需要检查是否有带有所需
键的条目
。检查是否是数组,如果不是创建数组,则添加新值并保存它

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)
}

要将结果作为数组或映射吗?
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)
}