我每隔30分钟收集一次温度。我希望按天分组并选择当天的最高温度,然后在七天内添加最高温度。
下面的代码似乎只选择了7天的最高温度,并没有将每天的最高温度相加。
通过JSON收集数据
{"status": "ok", "data": [{"temperature": 22.4, "date": "20160815-1430"}, {"temperature": 20.4, "date": "20160815-1500"}}
然后在我的控制器中
@data['data'].each do |d|
rainTotal << [DateTime.parse(d['date']), d['temperature']]
end
@rainTotal = rainTotal.group_by{ |h| h[0] }.reject{ |k, v| !( ((7.day.ago.to_date)..(Date.now)) === k ) }.inject(0){ |sum, h| sum + h.second.max_by { |h| h[1] }[1].to_f }
答案 0 :(得分:1)
当您致电rainTotal.group_by{ |h| h[0] }
时,您正在按DateTime
对象进行分组。如果每个日期/时间组合都是唯一的,那么结果是基本上没有分组,并且您只需得到所有温度的总和。
将该部分更改为rainTotal.group_by{ |h| h[0].to_date }
应解决该特定问题。