[英]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.