Массив рельсов исключает

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть массив, который содержит дату время и температуру.

Я пытаюсь подсчитать количество температур ниже 25 градусов, которые выпадают между определенными временными рамками (16:00:00 — 20:00:00), но вы не уверены в том, как лучше всего справиться с этим сценарием.

Данные из файла 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:

Может быть, что-то вроде этого:

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

Комментарии:

1. Ах, я совершенно упустил момент!

2. Кажется, сработало. Спасибо @railscard. Мне нужно будет провести некоторое тестирование, поскольку данные огромны. Я никогда раньше не видел опцию уменьшения.