我有这样的 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
以及 payout
和 numOfPeople
的总和对其进行分组。
即结果我想要这样的 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/