首页 > 解决方案 > 如何在哈希数组中搜索哈希键值

问题描述

我有一个哈希数组:

array = [
 {:name => "Bob" , :age => 27 , :place => "A"} ,
 {:name => "John" , :age => 50 , :place => "B"} ,
 {:name => "Alex" , :age => 80 , :place => "C"} 
]

我想获得:placeif的值:name == "John"

但是,如果我使用

array.find {|x| x[:name] == "John"}

我明白了

{:name=>"John", :age=>"27", :place=>A}

我可以用

array.second[:place]

这将返回B,但该数组将包含三个以上的 Hash 元素。

如何在另一个键值的条件下返回正确的位置?

标签: ruby-on-railsruby

解决方案


如果需要一个方法调用,他们可能会欺骗find更早的返回。

array.find { |h| break h[:place] if h[:name] == 'John' }
#⇒ "B"

推荐阅读