Tengo una variedad de hashes, @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
¿Cómo puedo buscar en esta matriz y devolver una matriz de hashes para los que un bloque devuelve verdadero?
Por ejemplo:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Gracias.
@fathers.find {|father| father["age"] > 35 }
en su lugar.esto devolverá el primer partido
fuente
#select
, pero todo vale para su caso de uso.#detect
regresaránil
si no se encuentra una coincidencia, mientras que#select
, en la respuesta de @ Jordan, regresará[]
.find
lugar dedetect
un código más legiblefind
Sin embargo, puede ser confuso en los rieles.select
ydetect
no son iguales,select
atravesarán toda la matriz, mientras quedetect
se detendrán tan pronto como se encuentre la primera coincidencia. Si estás buscando UN partido@fathers.select {|f| f["age"] > 35 }.first
contra@fathers.detect {|f| f["age"] > 35 }
rendimiento y legibilidad, mi voto es paradetect
si su matriz se ve así
Y desea saber si algún valor ya está presente en su matriz. Utilice el método de búsqueda
Esto devolverá el objeto si Hitesh está presente en el nombre, de lo contrario, devuelve nil
fuente
"hitesh"
, no devolverá el hash. ¿Cómo podemos explicar también el uso de mayúsculas y minúsculas en tales casos?