对数组中对象的所有属性求和

hsz*_*hsz 1 javascript ecmascript-6 lodash

我有以下数据集:

const input = [
  { x: 1, y: 3 },
  { y: 2, f: 7 },
  { x: 2, z: 4 }
];
Run Code Online (Sandbox Code Playgroud)

我需要对所有数组元素求和以获得以下结果:

const output = { f: 7, x: 3, y: 5, z: 4 };
Run Code Online (Sandbox Code Playgroud)

我不知道参数名称,所以我们不应该在任何地方伤害它。

将输入数组中的所有对象合并(属性求和)为一个的最短方法是什么?

可以使用 ES6 功能和 lodash。

geo*_*org 5

我想这是最短的解决方案:

const input = [
  { x: 1, y: 3 },
  { y: 2, f: 7 },
  { x: 2, z: 4 }
];

let result = _.mergeWith({}, ...input, _.add);

console.log(result);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

文件:

如果您同意替换第一个元素input,则可以省略第一个参数:

 _.mergeWith(...input, _.add)
Run Code Online (Sandbox Code Playgroud)