我设法做了一个coffescript map reduce来从数据库中取出我需要的东西。
inputarray = _.map _.groupBy(inputarrayz, 'Price'), (v, k) ->
{Price: k,
Money_Amount: _.reduce(v, ((m, i) -> m + i['Money_Amount']), 0),
Product_Amount: _.reduce(v, ((m, i) -> m + i['Product_Amount']), 0)}
sorted = _.sortBy inputarray,"Price"
return sorted
我有一个表格,其中包含了像这样的排序结果
价格/货币/产品
1/2/2
2/10/5
3/9/3
产品数量是货币除以价格。 现在我想要第四列来获得合并的产品数量,从第一行开始倒计时。 例如:
1/2/2/2(仅限2种产品)
2/10/5/7(之前的2+)
3/9/3/12(全部在+ 3之前)
我试着在jquery中这样做,因为当我想到map reduce时我的头开始爆炸...在添加构造之前导致一些奇怪的表行的原因。 希望有人能帮助我。
非常感谢。
答案 0 :(得分:0)
对于reduce
来说,总计是一个非常经典的案例。您需要做的就是在排序后添加另一个reduce
来计算运行总计并将其存储在对象中,如:
running_total = (t, p) -> p.Total = t + p.Product
_(sorted).reduce running_total, 0
那会给你这样的排序:
sorted = [
{ Price: 1, Money: 2, Product: 2, Total: 2 }
{ Price: 2, Money: 10, Product: 5, Total: 7 }
{ Price: 3, Money: 9, Product: 3, Total: 10 }
]