将 javascript 对象数组扁平化为一个对象的最简单解决方案是什么?

What is the simplest solution to flat an javascript array of objects into an object?

有什么方法可以转换以下数组:

[
  {x: 1},
  {y: 2}
]

给这个对象:

{
  x: 1,
  y: 2
}

在 javascript 中使用解构?

我尝试了不同的模式,但没有成功。

一种选择是使用 Array#reduce,如下所示:

const array = [
  {x: 1},
  {y: 2}
]

const object = array.reduce((target, item) => {
  
  // Use spread to merge current array item object 
  // into target object
  return { ...target, ...item }
}, {})

console.log(object);

这里的想法是通过归约迭代输入的每个项目 array,并且对于每次迭代,将当前数组 item 合并到 target 对象(这将是操作的结果 object)。

注意 targetitem 分布到归约结果中的顺序;如果在合并 itemtarget 期间有任何键冲突,将使用 item 中的值。