2010-08-05 205 views
18

内选择一个哈希我有以下阵列:红宝石:从阵列

response = [{"label"=>"cat", "name"=>"kitty", "id"=>189955}, {"label" => "dog", "name"=>"rex", "id" => 550081}] 

如何选择包含标签猫的哈希?我知道response.first会给我同样的结果,但我想通过标签搜索。

谢谢!

德布

回答

37
response.find {|x| x['label'] == 'cat' } #=> {"label"=>"cat", "name"=>"kitty", "id"=>189955} 
+0

越来越多,我发现,Ruby是真的很真棒(原因是多方面的,其中最重要的是这些小便利方法)。 – 2013-11-20 04:53:36

10

尝试:

response.select { |x| x["label"] == "cat" } 
+0

也可以选择,但是它会返回一个数组,所以我在这个特殊情况下使用“find”。谢谢! :) – deb 2010-08-05 21:01:14

+5

是的,'Array#find'返回第一个匹配或nil,而'Array#select'和'Array#find_all'返回所有匹配元素的数组。 – Zargony 2010-08-05 21:27:20

+1

另外值得注意的是'Array#find'的同义词是'Array#detect'。 – PreciousBodilyFluids 2010-08-06 03:28:06