無法將第二個數組對象值添加到 javascript 中的第一個對像數組中

馬努潘杜

嗨,我有兩個數組,我想合併兩個數組,任何人都可以幫忙嗎,我有 for 循環推送這些值,但它會創建重複項。

  const firstArray = [
    {
      first: "01",
      data: [{ id: "012345" }, { id: "0123456" }, { id: "0123457" }]
    },
    {
      first: "02",
      data: [{ id: "9998989" }, { id: "1223" }, { id: "345666" }]
    },
    {
      first: "03",
      data: [{ id: "567888" }, { id: "2345" }, { id: "09876" }]
    }
  ];
  const secondArray = [{ data: "abc" }, { data: "efg" }, { data: "hij" }];

我需要這樣的結果,任何人都可以,

[
  {
    first: "01",
    data: [
      { id: "012345", data: "abc" },
      { id: "0123456", data: "efg" },
      { id: "0123457", data: "hij" },
    ],
  },
  {
    first: "02",
    data: [
      { id: "9998989", data: "abc" },
      { id: "1223", data: "efg" },
      { id: "345666", data: "hij" },
    ],
  },
  {
    first: "03",
    data: [
      { id: "567888", data: "abc" },
      { id: "2345", data: "efg" },
      { id: "09876", data: "hij" },
    ],
  },
];
尼克帕森斯

您可以使用兩種.map()方法,而不是使用嵌套的 for 循環從頭開始構建數組一個用於將外部對象映射firstArray到具有新data值的新對象,另一個用於datasecondArray. 要合併,您可以secondArray使用索引獲取相應的對象,然後使用擴展語法將兩個對象合併在一起:

const firstArray = [ { first: "01", data: [{ id: "012345" }, { id: "0123456" }, { id: "0123457" }] }, { first: "02", data: [{ id: "9998989" }, { id: "1223" }, { id: "345666" }] }, { first: "03", data: [{ id: "567888" }, { id: "2345" }, { id: "09876" }] } ];

const secondArray = [{ data: "abc" }, { data: "efg" }, { data: "hij"}];
const res = firstArray.map(obj => ({
  ...obj,
  data: obj.data.map((inner, i) => ({...inner, ...secondArray[i]}))
}));
console.log(res);

要修復您當前的實現,您可以創建兩個數組,一個在您的 for 循環之外,就像您目前已經在做的那樣,然後一個在您的第一個 for 循環中。內部數組將代表您的新數據數組,然後您可以為當前對象更新它:

const firstArray = [{ first: "01", data: [{ id: "012345" }, { id: "0123456" }, { id: "0123457" }] }, { first: "02", data: [{ id: "9998989" }, { id: "1223" }, { id: "345666" }] }, { first: "03", data: [{ id: "567888" }, { id: "2345" }, { id: "09876" }] } ]; const secondArray = [{ data: "abc" }, { data: "123" }, { data: "xyz" }];

const emptyArray = [];
for (let i = 0; i < firstArray.length; i++) {
  const data = firstArray[i].data;
  const dataArray = [];
  for (let j = 0; j < data.length; j++) {
    const newObject = {
      ...data[j],
      ...secondArray[j]
    };
    dataArray.push(newObject);
  }
  emptyArray.push({...firstArray[i], data: dataArray});
}
console.log(emptyArray);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

確定一個對像數組是否包含 JavaScript 中另一個數組的任何對象

無法將從 mongoDB 獲取的對象添加到普通的 javascript 數組

如何在javascript中將標題/鍵添加到多個對象的數組中?

將一個數組與另一個數組進行比較,然後將第二個數組中缺少的對象添加到第一個數組中

javascript從數組中的第一個對象獲取值

Javascript比較單個對像數組中的結果,如果值在同一對像數組中匹配,則追加

迭代對像數組並在javascript中為每兩個對象拆分為數組

如何根據javascript中的第一個元素對多個嵌套數組的第二個元素進行分組?

JavaScript 查找:如果對象鍵存在於另一個對像數組中,則更新數組中對象的值,類似於 excel 中的 v-lookup

來自第一個數組的字段值以從 Javascript 中的第二個數組獲取值

如何使用javaScript將嵌套的對像數組轉換為一個對像數組?

加入兩個對像數組並在 JavaScript 中顯示剩餘值

如何在javascript中將嵌套對象轉換為對像數組?

如果該對象包含在 javascript 中的對像數組中,如何檢查整個原始對象(不使用任何屬性)?

在 JavaScript 中合併兩個具有相同鍵的對像數組

映射包含另一個帶有對象的數組的數組,並將它們顯示在 javascript 的表格中

在JavaScript中按第一個字符然後編號對數組進行排序

在 JavaScript 中使用嵌套對象展平數組的第一個元素

任何人都可以建議一種通過對象鍵對對像數組進行分組的方法,然後根據 JavaScript 中的分組創建一個新的對像數組嗎?

編寫一個函數,該函數接受一個對像數組並從原始數組中刪除所有紅色食物(JavaScript)

如何將新對象添加到 C++ 中的對像數組?

使用javascript將單獨數組的結果轉換為一個對象

忽略數組中的第二個對象(godot)

在Javascript中替換嵌套對像中的數組

如何在javascript中打破對像數組中的對象

如何像在 C++ 中那樣在 Javascript 中打包一個東西 [例如數組、對象]?

如何在對像數組中獲取具有唯一值的鍵?(JavaScript)

更新mongodb中對像數組的一個元素

Javascript從對像數組中刪除空或未定義的對象