UnderscoreJS:groupby + sortby

时间:2014-04-29 12:17:11

标签: javascript underscore.js

关于如何使用UnderscoreJS一起做grupby + sortby的任何建议?

有了以下收藏,我想找到每季最低的价格:

var d = [{ 
    "price": 27.25,
    "season": 2
},
{ 
    "price": 10,
    "season": 3
},
{ 
    "price": 21,
    "season": 2
}];

我能够使用以下内容进行分组:

_.chain(d).groupBy('season').map(function(value, key) {
return {
            season: key,
            obj: value

        }
    }).value();

让我:

[
 {"season":"2","obj":[{"price":27.25,"season":2},{"price":21,"season":2}]},
 {"season":"3","obj":[{"price":10,"season":3}]}
] 

3 个答案:

答案 0 :(得分:3)

试试这个:

var output = _.chain(d).groupBy("season").map(function (group) {
    return _.chain(group).sortBy("price").first().value();
}).value();

请参阅演示:http://jsfiddle.net/Ns2MJ/

答案 1 :(得分:1)

map函数中获取每个季节的最低价格:

_.chain(d).groupBy('season').map(function(value, key) {
  return {
    season: key,
    price: _.chain(value).pluck('price').min().value()
  }
}).sortBy('price').value();

答案 2 :(得分:1)

您可以使用_min结合_.property来提取群组中的最小价格:

var output = _.chain(d).groupBy('season').map(function (group) {
    return _.min(group, _.property('price'));
}).value();

演示http://jsfiddle.net/nikoshr/Edf5g/