如何在Ruby哈希中有效地找到值?

use*_*621 -1 ruby hash null ruby-on-rails key

我正在使用以下格式的哈希:

{2013-09-19 11:37:18 UTC=>10.780000000000001, 2013-09-21 11:37:18 UTC=>2.55, 2013-09-23 08:42:25 UTC=>2.55}
Run Code Online (Sandbox Code Playgroud)

然后我有一个循环,我有2013-09-21这种格式的日期值.我试图根据日期值在哈希值中找到一个值.

这是我正在尝试的:

%div "#{@data1.select{|key, hash| key.strftime('yyyy-MM-dd').to_s == day.to_s }}"
%div "#{@data2.select{|key, hash| key.to_s == day.to_s }}"
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下我都得到一个空数组.一种方法是遍历整个哈希并比较值,但这可能不是在哈希中找到项目的非常有效的方法.

我正在尝试select上面的方法,但我不确定如何正确使用它.

tih*_*hom 5

如果dayString,请尝试

@data1.select{|key, hash| key.strftime('%Y-%m-%d') == day}
Run Code Online (Sandbox Code Playgroud)

如果dayDate对象,请尝试

@data1.select{|key, hash| key.to_date == day}
Run Code Online (Sandbox Code Playgroud)

要返回所选键的值,请执行

@data1.select{|key, hash| key.to_date == day}.values.first
Run Code Online (Sandbox Code Playgroud)