我在我的Array
类中有以下方法:
class Array
def avg
if partial_include?(":")
avg_times
else
blank? and 0.0 or (sum.to_f/size).round(2)
end
end
def avg_times
avg_minutes = self.map do |x|
hour, minute = x.split(':')
total_minutes = hour.to_i * 60 + minute.to_i
end.inject(:+)/size
"#{avg_minutes/60}:#{avg_minutes%60}"
end
def partial_include?(search_term)
self.each do |e|
return true if e[search_term]
end
return false
end
end
这在处理普通数字数组时非常好用,但是可能会有一些情况需要处理时间数组。
例如:
[18:35, 19:07, 23:09]
有没有办法计算时间对象数组的平均值呢?
to_i
方法来获取和并进行除法运算。如果您先减去一个偏移量,那么速度会更快,因为您不需要处理Bignum
。 - user684934partial_include?(":")
替换为self.first[':']
,然后删除partial_include?
方法。 - hirolau