Javascript 如何使用u.reduce或本机reduce对对象进行求和和和排序?

Javascript 如何使用u.reduce或本机reduce对对象进行求和和和排序?,javascript,mapreduce,underscore.js,reduce,Javascript,Mapreduce,Underscore.js,Reduce,似乎u.reduce(或等效的本机函数)的示例非常简单。是否有人可以提供一个使用此函数对对象数组求和,然后排序的示例?例如,如果我的数组包含-- 我希望输出如下: [{store: 23, rank: 1, name: 'John', revenue: 900.00}, {store: 23, rank: 2, name: 'Kerry', revenue: 300.00}, {store: 24, rank: 1, name: 'Indira', revenue: 8400.00}, {sto

似乎u.reduce(或等效的本机函数)的示例非常简单。是否有人可以提供一个使用此函数对对象数组求和,然后排序的示例?例如,如果我的数组包含--

我希望输出如下:

[{store: 23, rank: 1, name: 'John', revenue: 900.00},
{store: 23, rank: 2, name: 'Kerry', revenue: 300.00},
{store: 24, rank: 1, name: 'Indira', revenue: 8400.00},
{store: 24, rank: 2, name: 'Lars', revenue: 2400.00},
{store: 24, rank: 3, name: 'Jacinta', revenue: 300.00}]

最好的办法是什么?

这个小怪物似乎能做到这一点:

result = _(data).chain().groupBy('name').map(function(g) {
    return {
        name:g[0].name,
        store:g[0].store,
        revenue: _.reduce(g, function(a, b) { return a + b.revenue}, 0)
    }
}).sortBy('revenue').reverse().groupBy('store').map(function(g) {
    return _(g).chain().map(function(x, n) {
        return x.rank = n + 1, x;
    }).value()
}).values().flatten().value()
result = _(data).chain().groupBy('name').map(function(g) {
    return {
        name:g[0].name,
        store:g[0].store,
        revenue: _.reduce(g, function(a, b) { return a + b.revenue}, 0)
    }
}).sortBy('revenue').reverse().groupBy('store').map(function(g) {
    return _(g).chain().map(function(x, n) {
        return x.rank = n + 1, x;
    }).value()
}).values().flatten().value()