逐个对象合并数组

mor*_*cai 5 javascript

我有一个相同大小的对象数组,像这样:

const array = [
  [{ name: 'John' }, { name: 'Julie' }, { name: 'Zack' }], 
  [{ color: 'blue' }, { color: 'orange' }, { color: 'green' }],
  [{ age: 12 }, { age: 10 }, { age: 35 }]
];
Run Code Online (Sandbox Code Playgroud)

我如何逐个对象合并这些数组以产生这样的输出?

const result = [{ name: 'John', color: 'blue', age: 12 }, { name: 'Julie', color: 'orange', age: 10 } ...] 
Run Code Online (Sandbox Code Playgroud)

如果可以使用lodash,那就太好了。提前致谢

Cod*_*iac 7

您可以使用map和destructuring

const array1 = [{ name: 'John' }, { name: 'Julie' }, { name: 'Zack' }]; 
const array2 = [{ color: 'blue' }, { color: 'orange' }, { color: 'green' }];
const array3 = [{ age: 12 }, { age: 10 }, { age: 35 }];

let final = array1.map((a, i) => ({ ...a,
  ...array2[i],
  ...array3[i]
}))

console.log(final)
Run Code Online (Sandbox Code Playgroud)


但是它可以与多个数组一起使用吗?

const array = [
  [{ name: 'John' }, { name: 'Julie' }, { name: 'Zack' }], 
  [{ color: 'blue' }, { color: 'orange' }, { color: 'green' }],
  [{ age: 12 }, { age: 10 }, { age: 35 }],
  [{ someProp: 1 }, { someProp: 2 }, { someProp: 3 }]
];

let remaining = array.slice(1,)

let final = array[0].map((v,i)=>{
  let temp = {...v}
  remaining.forEach(v2=>{
    temp = {...temp, ...v2[i]}
  })
  return temp
})

console.log(final)
Run Code Online (Sandbox Code Playgroud)