目前我遇到了这个问题 例如,我有一个哈希数组
data = [
{:id => 1,:start_date => "2015-01-02",:end_date => "2015-01-05"},
{:id => 2,:start_date => "2015-01-06",:end_date => "2015-01-07"},
{:id => 3,:start_date => "2015-01-10",:end_date => "2015-01-20"}
]
我希望找到在上述哈希值的开始日期和结束日期范围内具有"2015-01-04"的确切哈希值。
根据文档,我发现有三种方法可以实现这一目标:
1)使用select语句
finding_hash = data.select {|h| h[:start_date] <= "2015-01-04" && h[:end_date] >= "2015-01-04"}
finding_hash将返回所需哈希值的数组
但是在执行SELECT之后,我确保只有一个哈希值与条件匹配,则需要使用finding_hash.first
来获取所需的哈希值。
2)使用find
finding_hash = data.find{|h| h[:start_date] <= "2015-01-04" && h[:end_date] >= "2015-01-04"}
这种做法中,finding_hash就是我需要的结果哈希值。
3)传统循环。
data.each do |t|
if (t[:start_date] <= "2015-01-04" && t[:end_date] >= "2015-01-04")
return t
break
end
end
那么哪种方法是最快的呢?我确实需要高性能,因为我的数据非常大!
谢谢您,对我的糟糕英语表示歉意!