我有两个对象数组,我想创建一个新的对象数组,其中每个对象都是前两个对象的合并版本,例如:
const one = [
{ id: 1, title: 'One' },
{ id: 2, title: 'Two' }
]
const two = [
{ status: 'Open' },
{ status: 'Close' }
]
从上面的数组中我期望:
const result = [
{ id: 1, title: 'One', status: 'Open' },
{ id: 1, title: 'Two', status: 'Close' }
]
这里的问题是我不知道如何创建一个实际上可以接收 n 个对象数组并创建新数组的函数,例如,如果我想合并第三个数组:
const three = [
{ items: 10 },
{ items: 2 }
]
我期望以下数组:
const result = [
{ id: 1, title: 'One', status: 'Open', items: 10 },
{ id: 1, title: 'Two', status: 'Close', items: 2 }
]
我认为实际上我可以创建一个接收扩展的函数,但我不知道如何将接收到的每个数组中的每个对象合并到函数中。
最佳答案
您可以使用“Array.reduce”或“Array.map”来实现此目的,如下所示
const one = [
{ id: 1, title: 'One' },
{ id: 2, title: 'Two' }
]
const two = [
{ status: 'Open' },
{ status: 'Close' }
]
const three = [
{ items: 10 },
{ items: 2 }
]
// using REDUCE
function mergeArrays1(arrays) {
return arrays[0].reduce((a, d, i) => a.concat(Object.assign(...arrays.map(d => d[i]))), [])
}
// Using Map
function mergeArrays2(arrays) {
return arrays[0].map((d, i) => Object.assign(...arrays.map(d => d[i])))
}
console.log(mergeArrays1([one, two, three]))
console.log(mergeArrays2([one, two, three]))
关于javascript - 合并 n 个对象数组中的 n 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237182/