Lui*_*igi 1 ruby arrays time average
我有一个数组:
array = ["0:00:31", "0:00:52", "0:01:05", "0:00:55", "0:01:33", "0:00:05", "0:00:01",
"0:05:10", "0:02:40", "0:03:03", "0:01:33", "0:00:00"]
Run Code Online (Sandbox Code Playgroud)
我需要平均数组中不等于的所有时间"0:00:00"."0:00:00"应该被抛弃.
最好的方法是什么?我正在循环遍历数组,删除所有0:00:00值,将字符串转换为整数并做一个平均值 - 但它似乎是我想要做的很多代码.
(sz = array.reject {|t| t == '0:00:00' }).
map {|t| Time.parse t }.
reduce(0) {|a, t| a += t.to_i }.to_f / sz.size
Run Code Online (Sandbox Code Playgroud)
您希望将这些内容分组为功能操作.拒绝你不需要的东西,然后采取其他措施.
这reduce是获得阵列平均值的可行方法,并且之前已得到解答.
这是一个更简洁,更隐秘的替代方案
(sz = array.reject {|t| t == '0:00:00' }).
map {|t| Time.parse(t).to_i }.
reduce(:+).to_f / sz.size
Run Code Online (Sandbox Code Playgroud)