【发布时间】:2011-05-05 05:09:00
【问题描述】:
我在 Ruby 中有一个哈希数组:
array = [
{:date => Wed, 04 May 2011 00:00:00 PDT -07:00,
:value => 200}
{:date => Wed, 04 May 2011 01:00:00 PDT -07:00,
:value => 100}
{:date => Tue, 03 May 2011 01:00:00 PDT -07:00,
:value => 300}
{:date => Tue, 03 May 2011 01:00:00 PDT -07:00,
:value => 150}
]
我希望能够组合每天的值,这样我就有了一个像这样的新数组:
array = [
{:date => Wed, 04 May 2011 00:00:00 PDT -07:00,
:value => 300}
{:date => Tue, 03 May 2011 00:00:00 PDT -07:00,
:value => 450}
]
按天搜索数组并总结每一天的值的最优雅的方法是什么?
这是我最初尝试的:
entries = [
{:date => Wed, 04 May 2011 00:00:00 PDT -07:00,
:value => 200}
{:date => Wed, 04 May 2011 01:00:00 PDT -07:00,
:value => 100}
{:date => Tue, 03 May 2011 01:00:00 PDT -07:00,
:value => 300}
{:date => Tue, 03 May 2011 01:00:00 PDT -07:00,
:value => 150}
]
first_day = 29.days.ago.beginning_of_day
total_days = 30
day_totals = (0...total_days).inject([]) do |array, num|
startat = first_day + num.day
endat = startat.end_of_day
total_value_in_day = entries.where("date >= ? and date <= ?", startat, endat).sum(:value)
array << {:date => startat, :value => total_value_in_day}
end
我意识到我的错误在于 where 方法,这是一种用于搜索对象的 Rails 方法,不能用于数组。所以我的主要问题是,有没有办法根据条件搜索数组或哈希。
【问题讨论】:
-
如果你不介意我优雅直率,最优雅的方式真的是你自己writesome code。代码的优雅是一种价值,达到它是件好事,但如果没有(痛苦的)练习,你就无法达到精通。也许read a good book
-
编辑了帖子以显示我自己尝试的代码,以及我遇到的问题。
-
5 月 3 日星期二的组合值 450 来自哪里?
-
啊哈,现在问题好多了!
-
@sawa,哎呀,这是一个错字,刚刚修复