2012-01-03 89 views
1

我在滑轨工作3.1作为相对小白,并已成功使用此代码(其中日期和amount_cents是分贝属性)以提取用户事务从分贝量为日期排序的数组:如何计算数组元素的运行总数?

@user_trans = User.transactions.order(“date”)。map {| t | t.amount_cents}

=> [1000,-350,-250,600,750,-450]

我很容易地得到一个总阵列的与:

@ user_trans.sum => 1300

但我只是无法弄清楚是遍历数组中的每个元素,第一个元素添加到第二个,第二个第三个,等等,导致运行总计一种优雅的方式:

[1000,650,400,1000,1750,1300]

似乎每个orinject都是使用的方法,但除了笨重的多行破解之外,我还没有找到这样做的魔法语法,但似乎应该有一个简化的方法。顺序非常重要。也许退掉总数,然后扭转?

我坐在脚下,充满希望的期待...... :)

回答

4

这里是一个单线。需要to_i来处理结果数组为空的第一个元素(nil.to_i将评估为0)。

@user_trans.inject([]) { |result, element| result << result.last.to_i + element } 
+0

太棒了!完美优雅。这是我错过的.last选择器。谢谢。 – awvidmer 2012-01-03 17:43:43