[英]How to add to each object in an array a key-pair value based on each objects id?
[英]Add values as array to object key-pair
我想將空 object 的值添加到動態接收的正確密鑰中。
顯然以下內容不起作用,因為我用最新值替換了該鍵的現有值:
let obj = {};
let key;
let value;
key = // from selectors
value = // from selectors
obj[key] = value;
我怎樣才能將新值“推送”到該鍵而不是替換它?
例如,如果在使用key1
進行 2 次迭代后選擇了value1
和value2
,那么 object 的最終結果將是
{"key1": ['value1', 'value2']}
試試這個:
if (obj[key] === undefined) obj[key] = []
obj[key].push(value)
分配時,只需添加到數組或創建一個(如果不存在)
obj[key] = [...(obj[key] ?? []), value];
,
obj[key] = (obj[key] ?? []).concat(value);
, 要么
if (!obj[key]) obj[key] = [];
obj[key].push(value);
有幾種方法可以實現這一點。 一種常見的方法是將obj[key]
設置為等於自身,將其默認為帶有?? []
的空數組。 ?? []
( nullish coalescing ) 如果它是null
/ undefined
,即: nullish ),然后使用.concat()
返回一個帶有附加值的新數組:
obj[key] = (obj[key] ?? []).concat(value); // ?? can be replaced with `||` for better browser support
或者使用??=
( 無效合並分配)將obj[key]
設置為空數組(如果它為空),然后推入該數組.push()
以更新現有數組
(obj[key] ??= []).push(value);
上面的工作是因為obj[key]?? = []
obj[key]?? = []
] 如果obj[key]
undefined
/ null
,會將obj[key]
設置為[]
,然后返回對存儲在obj[key]
的數組的引用,即我們剛剛創建的數組或已經存在的數組在obj[key]
處。 然后我們可以.push()
進入這個數組引用,它在obj
中更新它
要向 object 中的現有鍵添加新值,可以使用以下語法:
obj[key].push(value);
這會將值添加到存儲在對象 object 中的鍵的數組末尾。
例如:
let obj = {};
let key = 'key1';
let value1 = 'value1';
let value2 = 'value2';
obj[key] = []; // Initialize the key with an empty array
obj[key].push(value1); // Add value1 to the array at key
obj[key].push(value2); // Add value2 to the array at key
console.log(obj); // Output: { key1: [ 'value1', 'value2' ] }
請注意,這僅在密鑰已存在於 object 中並使用數組初始化時才有效。 如果 key 不存在,或者初始化為非數組值,則需要先創建 key 並將其設置為空數組,然后才能使用 push 方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.