2010-08-05 18 views
18

içinden bir karma seçmek Ben şu dizi:Yakut: Bir dizinin

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

nasıl etiket kedi içeren karma seçilir? response.first'un aynı sonucu vereceğini biliyorum, ancak etikete göre aramak istiyorum.

Teşekkürler!

Deb

cevap

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

Giderek daha fazla ben Ruby sadece gerçekten harika olduğunu keşfediyorum (birçok nedenden dolayı, en azından bunların bu küçük kolaylık yöntemleri olmak üzere). –

10

Dene:

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

da çalışır, ancak bir dizi döndürür, bu yüzden bu durumda "bul" ile gidiyorum. Teşekkürler! :) – deb

+5

Evet, "Array # find" ilk eşleşmeyi döndürür veya null, "Array # select" ve "Array # find_all" tüm eşleşen öğelerin bir dizisini döndürür. – Zargony

+1

Ayrıca "Array # find" için eşanlamlı olan "Array # detect" ifadesinin de dikkat çekicidir. – PreciousBodilyFluids