簡體   English   中英

將值作為數組添加到 object 密鑰對

[英]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 次迭代后選擇了value1value2 ,那么 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.

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