说我们有
[{:name=>"Joe", :age => 15},{:name=>"Josh", :age => 83},{:name=>"Jim", :age => 1203}]
获取名称为“Joe”的散列的最佳方法是什么?要返回{:name=>"Joe", :age=>15}
?
答案 0 :(得分:7)
array.select
将返回一个值数组(即使只有一个匹配项):
my_array.select { |item| item[:name] == "Joe" }
# => [{:name => "Joe", :age => 15}]
您可以使用Enumerable的find
方法来返回第一个实例(作为哈希):
my_array.find { |item| item[:name] == "Joe" }
# => {:name => "Joe", :age => 15}
答案 1 :(得分:3)
array.select { |e| e[:name] == 'Joe' }.first
答案 2 :(得分:1)
如果这是您需要经常执行的操作,则将哈希集存储为哈希哈希值,name
键的值作为每个哈希的键。这样,您就可以在O(1)
时间内查找哈希值。