簡體   English   中英

如何將值添加到 javascript map 中的特定鍵?

[英]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" });
});

這意味着您必須從Mapget項目,然后將其與新數據一起再次插入以將其附加。

希望能幫助到你

您需要檢查是否有帶有所需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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM