javascript - 将对象数组中的所有数据求和到新的对象数组中

标签 javascript arrays lodash

我有一个如下所示的对象数组:

var data = [
    { costOfAirtickets: 2500, costOfHotel: 1200 },
    { costOfAirtickets: 1500, costOfHotel: 1000 },
]

我想对数组中的每个元素求和以生成如下数组:

var result = [ { costOfAirtickets: 4000, costOfHotel: 2200 } ]

我使用了映射和归约函数,但我只能对单个元素求和,如下所示:

data.map(item => item.costOfAirtickets).reduce((prev, next) => prev + next); // 22

目前,这会产生一个单一值,这不是我最初解释想要的值。

有没有办法用 Javascript 或可能使用 lodash 来做到这一点。

最佳答案

使用for..in迭代对象,使用reduce迭代数组

var data = [{costOfAirtickets: 2500, costOfHotel: 1200},{costOfAirtickets: 1500, costOfHotel: 1000}];

var result = [data.reduce((acc, n) => {
  for (var prop in n) {
    if (acc.hasOwnProperty(prop)) acc[prop] += n[prop];
    else acc[prop] = n[prop];
  }
  return acc;
}, {})]
console.log(result)

关于javascript - 将对象数组中的所有数据求和到新的对象数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52479107/

相关文章:

javascript - 使用 JavaScript 将数据插入数组

vue.js - 在使用 Lodash 对 Vue 中的搜索请求进行去抖动时无法访问它?

javascript - 如何按键对对象数组进行分组?

angular - Typescript 按状态排序列表(字符串值)

javascript - socket_bind()函数中的端口参数可以是80或443吗?

javascript - 何时以及为何使用这些不同的 Javascript 函数声明格式?

C - 数组。仅更改特定值

javascript - 将数组的大小/长度减少到一定的大小/长度

c++ - 我无法让我的简单程序将二维数组传递给函数

javascript - 从表中的输入获取数据