2010-08-05 10 views
18

Mam następujące tablicy:Ruby: wybierz skrót od wewnątrz tablicy

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

Jak wybrać skrót, który zawiera etykiety kota? Wiem, że response.first da mi taki sam wynik, ale chcę przeszukać etykietę według.

Dzięki!

Deb

Odpowiedz

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

Coraz bardziej jestem odkryciu, że Ruby jest po prostu naprawdę niesamowite (z wielu powodów, z których co najmniej bycia tych małych metod wygody). –

10

Spróbuj:

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

select też działa, ale zwraca tablicę, więc wybieram "find" w tym konkretnym przypadku. Dzięki! :) – deb

+5

Tak, 'Array # find' zwraca pierwsze dopasowanie lub zero, podczas gdy' Array # select' i 'Array # find_all' zwraca tablicę wszystkich pasujących elementów. – Zargony

+1

Warto również zauważyć, że synonim dla 'Array # find' to' Array # detect'. – PreciousBodilyFluids

Powiązane problemy