Rails数组排除

时间:2014-06-27 06:15:47

标签: ruby-on-rails

我有一个数组,其中包含日期+时间和温度。

我希望计算在特定时间范围(16:00:00 - 20:00:00)之间的温度低于25度,但不确定如何最好地解决这种情况。

来自json文件的数据

{"status": "ok", "data": [{"2014-06-16 16:00:00": 24.2},{"2014-06-17 12:00:00": 30.2},{"2014-06-18 17:00:00": 42.9}]} etc

控制器

@data = JSON.parse(open(@temperature.url).read)

dates = []
temps = []

@data['data'].each do |data|
 dates << data.keys
 temps << data.values
end

@nights25 = dates.flatten.count {|i| ["16:", "17:", "18:", "19:", "20:"].include?(i) if i.temps > 25 end } 

1 个答案:

答案 0 :(得分:2)

也许是这样的:

temp = @data['data'].reduce({}, :merge)    
temp.count { |time, deg| (16..20).include?(Time.parse(time).hour) && deg < 25 }