将数组值与underscore.js组合在一起

时间:2014-04-24 14:48:52

标签: javascript sorting coffeescript mapreduce underscore.js

我设法做了一个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时我的头开始爆炸...在添加构造之前导致一些奇怪的表行的原因。 希望有人能帮助我。

非常感谢。

1 个答案:

答案 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 }
]

演示:http://jsfiddle.net/ambiguous/e5duF/