嗨,我有兩個陣列,我想合并兩個陣列,任何人都可以幫忙嗎,我有 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" },
],
},
];
uj5u.com熱心網友回復:
假設data陣列和第二個陣列大小相同。使用嵌套map方法呼叫來構建聚合
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 output = firstArray.map(({ first, data }) => ({
first,
data: data.map((item, i) => ({ ...item, ...secondArray[i] })),
}));
console.log(output)
uj5u.com熱心網友回復:
您可以使用兩種.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);
uj5u.com熱心網友回復:
您可以在js中使用map輕松實作結果
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 result = firstArray.map((obj) => ({
...obj,
data: obj.data.map((o, i) => ({ ...o, ...secondArray[i] })),
}));
console.log(result);
uj5u.com熱心網友回復:
根據您想要的結果,您應該執行以下操作:
let emptyArrray = [];
for (let i = 0; i < firstArray.length; i ) {
const dataa = firstArray[i].data;
for (let j = 0; j < dataa.length; j ) {
// console.log(secondArray[i]);
let newObject = {
...secondArray[j],
...dataa[j]
};
emptyArrray.push(newObject);
}
}
在您的代碼中,您將獲得 3*9 長陣列,因為您在不應該使用的嵌套回圈中使用了嵌套回圈,您只需遍歷該陣列一次,然后添加陣列 2 中的成員,您也使用過
...secondArray[i],
...dataa[i]
代替
...secondArray[j],
...dataa[j]
在 for 回圈中增加j時
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335757.html
標籤:javascript 数组
