簡體   English   中英

在包含對象的數組上使用擴展運算符

[英]Using the spread operator on an array with objects

我有一個 Javascript object 看起來像這樣:

{
   key1: {
           itemId: "someId",
           myValue: "value"
   },
   key2: {
           itemId: "someId2",
           myValue: "value2"
   }
}

我還有一個數組,我將這樣的項目推送到其中:

myArr.push({[item.itemId] : anotherDefinedObject}); //inside a loop on items

然后我想將我推送到數組的所有項目加入到第一個 object 中。 這意味着,例如,如果項目 id 是“key3”和“key4”,我會得到這個 object:

{
   key1: {
           itemId: "someId",
           myValue: "value"
   },
   key2: {
           itemId: "someId2",
           myValue: "value2"
   },
   key3: { //the object that was added },
   key4: { //the object that was added }
}

我嘗試使用擴展運算符來做到這一點:

return {...object, ...myArr}

但后來我沒有得到我需要的東西,而是得到“0”、“1”等新 object 中的鍵(因為 0,1 等是數組的鍵)。

如何以我想要的方式連接 object 和數組?

const obj = {key1: 1};
const myArr = [{key2: 2}];
myArr.forEach(val => Object.assign(obj, val));

console.log(obj); // {key1: 1, key2: 2}

而是我的myArray創建myObject

myObject = {}
myObject[item.itemId] = anotherDefinedObject;

然后

return {...object, ...myObject}

使用擴展運算符無法實現您在此處實現的目標; 它完全按預期工作,並且由於 JS 不允許運算符重載,因此無法更改功能。 最好的辦法是遍歷 myArr 並使用您自己的代碼將數組中的每個項目添加到 object。

PS 正如評論所暗示的,將來您應該提供更多輸入示例,當前的 output 和您的預期 output; 沒有它很難理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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