Mam szereg skrótów, @fathers.
a_father = { "father" => "Bob", "age" => 40 }
@fathers << a_father
a_father = { "father" => "David", "age" => 32 }
@fathers << a_father
a_father = { "father" => "Batman", "age" => 50 }
@fathers << a_father
Jak mogę przeszukać tę tablicę i zwrócić tablicę skrótów, dla których blok zwraca wartość prawda?
Na przykład:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Dzięki.
@fathers.find {|father| father["age"] > 35 }
zamiast tego.to zwróci pierwszy mecz
źródło
#select
- ale wszystko idzie w twoim przypadku użycia.#detect
zwróci,nil
jeśli nie zostanie znalezione dopasowanie, a#select
w odpowiedzi @ Jordan zwróci[]
.find
zamiastdetect
bardziej czytelnego kodufind
może się jednak mylić w szynach.select
idetect
nie są takie same,select
przejdą przez całą tablicę, adetect
zatrzymają się, gdy tylko zostanie znalezione pierwsze dopasowanie. JEŻELI szukasz JEDNEJ meczu@fathers.select {|f| f["age"] > 35 }.first
przeciwko@fathers.detect {|f| f["age"] > 35 }
wydajności i czytelności, głosuję nadetect
jeśli twoja tablica wygląda
I chcesz wiedzieć, czy jakaś wartość jest już obecna w twojej tablicy. Użyj metody wyszukiwania
Zwróci obiekt, jeśli Hitesh jest obecny w nazwie, w przeciwnym razie zwróci zero
źródło
"hitesh"
, nie zwróci skrótu. Jak w takich przypadkach możemy uwzględniać wielkość liter?