create - ¿Cómo busco dentro de una matriz de hashes por valores hash en ruby?
ruby create array (3)
Tengo una serie 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 esta matriz y devolver una matriz de hashes para la cual un bloque devuelve true?
Por ejemplo:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Gracias.
Está buscando Enumerable#select (también llamado find_all
):
@fathers.select {|father| father["age"] > 35 }
# => [ { "age" => 40, "father" => "Bob" },
# { "age" => 50, "father" => "Batman" } ]
Según la documentación, "devuelve una matriz que contiene todos los elementos de [el enumerable, en este caso @fathers
] cuyo bloque no es falso".
esto devolverá el primer partido
@fathers.detect {|f| f["age"] > 35 }
si tu matriz parece
array = [
{:name => "Hitesh" , :age => 27 , :place => "xyz"} ,
{:name => "John" , :age => 26 , :place => "xtz"} ,
{:name => "Anil" , :age => 26 , :place => "xsz"}
]
Y desea saber si algún valor ya está presente en su matriz. Utilice el método de búsqueda
array.find {|x| x[:name] == "Hitesh"}
Esto devolverá el objeto si Hitesh está presente en el nombre, de lo contrario devolverá nil