在ruby的哈希数组中找到包含键的哈希的最佳方法?

时间:2011-10-26 16:34:08

标签: ruby arrays

说我们有

[{:name=>"Joe", :age => 15},{:name=>"Josh", :age => 83},{:name=>"Jim", :age => 1203}]

获取名称为“Joe”的散列的最佳方法是什么?要返回{:name=>"Joe", :age=>15}

3 个答案:

答案 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)时间内查找哈希值。