gpt4 book ai didi

javascript - 将两个数组中的对象合并为一个

转载 作者:行者123 更新时间:2023-12-02 06:28:30 24 4
gpt4 key购买 nike

我有一个关于在数组中合并对象的问题。最大的问题是如何在合并这些数组后保存这个数组结构,因为如果我在这些数组之后使用 .push() 进行迭代,我会收到一个大数组。查看我的数据:

[ 
[
{ name: '1' },
{ name: '2' },
{ name: '3' },
],
[
{ name: '4' },
{ name: '5' },
{ name: '6' },
]
]

[ 
[
{ correct: false },
{ correct: true },
{ correct: false },
],
[
{ correct: true },
{ correct: false },
{ correct: false },
]
]

我的观点是如何将这两个数组合并为一个数组,形式如下

[ 
[
{ name: '1', correct: false },
{ name: '2', correct: true },
{ name: '3', correct: false },
],
[
{ name: '4', correct: true },
{ name: '5', correct: false },
{ name: '6', correct: false },
]
]

我尝试了以下循环,但我收到了一个大数组,但我需要两个数组

for(i in nameArray) {
for(j in nameArray[i]){
var mergeObj = Object.assign(nameArray,correctArray[j]) //I get undefned
correctArray.push(nameArray[i][j])
}
}

最佳答案

你很接近,但是你有对象数组的数组,所以你需要 correctArray[i][j]

const nameArray = [ 
[{ name: '1' },{ name: '2' },{ name: '3' }],
[{ name: '4' },{ name: '5' },{ name: '6' }]
];

const correctArray = [
[{ correct: false },{ correct: true },{ correct: false }],
[{ correct: true },{ correct: false },{ correct: false }]
];

nameArray.forEach((a, i) =>
a.forEach((o, j) => Object.assign(o, correctArray[i][j]))
);

console.log(nameArray);

这里我使用了 .forEach(),这比在数组上使用 for-in 更好。 nameArray 中的对象正在发生变化,因此这就是您的结果。如果您不想改变,您可以改为使用 .map() 调用并在 Object.assign 的开头添加一个空对象。

const nameArray = [ 
[{ name: '1' },{ name: '2' },{ name: '3' }],
[{ name: '4' },{ name: '5' },{ name: '6' }]
];

const correctArray = [
[{ correct: false },{ correct: true },{ correct: false }],
[{ correct: true },{ correct: false },{ correct: false }]
];

const result = nameArray.map((a, i) =>
a.map((o, j) => Object.assign({}, o, correctArray[i][j]))
);

console.log(result);

关于javascript - 将两个数组中的对象合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com