嗨,我有兩個數組,我想合併兩個數組,任何人都可以幫忙嗎,我有 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
值的新對象,另一個用於data
從secondArray
. 要合併,您可以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] 删除。
我来说两句