Comment rechercher dans un tableau de hachages des valeurs de hachage en ruby?

J’ai un tableau de hachages, @fathers.

a_father = { "father" => "Bob", "age" => 40 } @fathers < "David", "age" => 32 } @fathers < "Batman", "age" => 50 } @fathers << a_father 

Comment puis-je rechercher ce tableau et retourner un tableau de hachages pour lequel un bloc renvoie true?

Par exemple:

 @fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman 

Merci.

Vous recherchez Enumerable # select (également appelé find_all ):

 @fathers.select {|father| father["age"] > 35 } # => [ { "age" => 40, "father" => "Bob" }, # { "age" => 50, "father" => "Batman" } ] 

Selon la documentation, il “renvoie un tableau contenant tous les éléments de [l’énumérable, dans ce cas @fathers ] pour lequel le bloc n’est pas faux.”

cela retournera premier match

 @fathers.detect {|f| f["age"] > 35 } 

si votre tableau ressemble

 array = [ {:name => "Hitesh" , :age => 27 , :place => "xyz"} , {:name => "John" , :age => 26 , :place => "xtz"} , {:name => "Anil" , :age => 26 , :place => "xsz"} ] 

Et vous voulez savoir si une valeur est déjà présente dans votre tableau. Utiliser la méthode de recherche

 array.find {|x| x[:name] == "Hitesh"} 

Cela retournera l’object si Hitesh est présent dans le nom sinon retourne nil