2010-08-05 156 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