javascript - 使用 Underscore/Lodash 分组和求和

标签 javascript arrays object underscore.js lodash

我有这样的 JSON:

[
  {
     platformId: 1,
     payout: 15,
     numOfPeople: 4
  },
  {
     platformId: 1,
     payout: 12,
     numOfPeople: 3

  },
  {
     platformId: 2,
     payout: 6,
     numOfPeople: 5

  },
  {
     platformId: 2,
     payout: 10,
     numOfPeople: 1
  },

]

我想按 platformId 以及 payoutnumOfPeople 的总和对其进行分组。

即结果我想要这样的 JSON:

[
  "1": {
     payout: 27,
     numOfPeople: 7
   },

  "2": {
     payout: 16,
     numOfPeople: 6
  }
] 

我尝试使用 underscore.js_.groupBy 方法,它分组很好,但是我如何获得对象属性值的 SUM,就像我演示的那样多于?

最佳答案

这是一个 Lodash解决这类问题。它类似于 Underscore,但具有一些更高级的功能。

const data = [{
    platformId: 1,
    payout: 15,
    numOfPeople: 4
  },
  {
    platformId: 1,
    payout: 12,
    numOfPeople: 3

  },
  {
    platformId: 2,
    payout: 6,
    numOfPeople: 5

  },
  {
    platformId: 2,
    payout: 10,
    numOfPeople: 1
  },
];

const ans = _(data)
  .groupBy('platformId')
  .map((platform, id) => ({
    platformId: id,
    payout: _.sumBy(platform, 'payout'),
    numOfPeople: _.sumBy(platform, 'numOfPeople')
  }))
  .value()

console.log(ans);
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>

关于javascript - 使用 Underscore/Lodash 分组和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25047463/

相关文章:

php - 将关联对添加到 PHP 数组

c - C 中的指针声明与有限数组声明

javascript - 如何分离对象数组中每个对象的键和值 - Javascript

java - 将对象保存到 firebase db 时出现意外错误? (mClassMapper.access$200(com.google.firebase :firebase-database@@16. 0.5:47))

c#从对象调用方法

javascript - 使用 font Awesome 和 bootstrap 设置复选框样式

javascript - 页面刷新后如何保持div隐藏?

javascript - 如何使用 Lodash 以相反顺序迭代数组?

javascript - JS 中关于在循环中引用相同数据的变量的规则是什么?

javascript - Angularjs 输入名称未定义