Ruby:平均次数

我的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][18:35, 19:07, 23:09]

无论如何要弄清楚一组时间对象的平均值?

因此,您需要定义一个函数,该函数可以计算格式化为字符串的平均次数。 将数据转换为分钟,平均总分钟,然后返回到时间。

我会这样做:

 a = ['18:35', '19:07', '23:09'] def avg_of_times(array_of_time) size = array_of_time.size avg_minutes = array_of_time.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 p avg_of_times(a) # = > "20:17" 

然后,当您调用函数时,检查数组中的任何/所有项目是否格式化为时间。 也许使用正则表达式。