我正在嘗試將另一個物件中的資料添加到新物件中,同時
const addCardData = { ...optIn, cardId, cardName}
在此處添加新資料 optIn 已經具有 cardId 和 cardName ,因此它們將被新值替換,如何制作 addCardData 使得 cardId 和 cardName 不會被替換但添加到物件還是子物件?還是有其他更好的方法可以做到這一點?
uj5u.com熱心網友回復:
如果您的目標是保留“optIn”中的值,您可以最后添加它們。
例如:
addCardData = {
cardId,
cardName,
...optIn
};
如果您的目標是添加兩個版本的 cardId 和兩個版本的 cardName,您有兩種選擇:
- 更改 cardId 和 cardName 的名稱,因為一個物件只能舊一個具有給定名稱的屬性。
例如:
addCardData = {
newCardId: cardId,
newCardName: cardName,
...optIn
};
- 添加 optIn 物件作為屬性
addCardData = {
cardId,
cardName,
optIn
};
然后你可以參考它addCardData.optIn.cardId。
uj5u.com熱心網友回復:
這是一種組合兩個物件的方法。如果其中任何屬性已經存在,optIn它將被更改為一個陣列,addCardData然后將新值推送到它上面:
const optIn={a:123,b:456,cardId:789,cardName:"Harry"},cardId=222,cardName="Sally";
const addCardData = {...optIn};
Object.entries({cardId,cardName}).forEach(([k,v])=>{
(addCardData[k]=Array.isArray(addCardData[k])?addCardData[k]:[addCardData[k]]).push(v)
});
console.log(addCardData);
uj5u.com熱心網友回復:
因此,首先將 optIn 轉換為陣列,然后執行 optIn.push({cardId, cardName}) 可以完美地作業,而無需創建任何嵌套物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492015.html
標籤:javascript 目的
