我设法减少并合并我的Price Amount对象:
stooges = [{Price: 1.2, Amount: 40}, {Price: 1.3, Amount: 50}, {Price: 1.2, Amount: 60}];
inputarray = _.map _.groupBy(stooges, 'Price'), (v, k) ->
{ Price: k
Amount : _.reduce(v, ((m, i) -> m + i['Amount']), 0)}
console.log(inputarray)
创建以下
[Object { Price="1.2", Amount=100}, Object { Price="1.3", Amount=50}]
但也许分组很多。无论如何我试着像这样结束
[ { 1.2 : 100 } , { 1.3 : 50 } ]
将价格作为关键,将金额作为价值。 该死的我真傻。
答案 0 :(得分:0)
试试这个:
_.map(_.groupBy(stooges, 'Price'), function(v, k){
var obj = {};
obj[k] = _.reduce(v, function(m, i){ return m + i['Amount'] }, 0);
return obj;
})
返回以下内容:
[{ "1.2": 100 }, { "1.3": 50 }]
编辑:我不确定返回数组是否有用。如果你使用的是Lo-Dash而不是Underscore(我建议你这样做),你可以使用它来代替一个对象,它将所有的价格作为总金额的关键:
_(stooges).groupBy('Price').mapValues(function(stooge){
return _(stooge).pluck('Amount').reduce(function(total, amount){
return total + amount;
})
}).value()
返回以下内容:
{ "1.2": 100, "1.3": 50 }
答案 1 :(得分:0)
result1 = _.pluck inputarray,' Price'
result2 = _.pluck inputarray,' Amount'
boo = _.object(result1,result2);
感谢现在它不像你那样优雅!