J'ai un tableau de hachages, @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
Comment puis-je rechercher ce tableau et retourner un tableau de hachages pour lesquels un bloc retourne vrai?
Par exemple:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Merci.
@fathers.find {|father| father["age"] > 35 }
place.cela retournera le premier match
la source
#select
- Mais tout va pour votre cas d'utilisation.#detect
reviendranil
si aucune correspondance n'est trouvée, tandis que#select
, dans la réponse de @ Jordan, reviendra[]
.find
au lieu dedetect
pour un code plus lisiblefind
peut toutefois prêter à confusion dans les rails.select
etdetect
ne sont pas identiques,select
traversera l'ensemble du tableau, tandis quedetect
s'arrêtera dès que la première correspondance sera trouvée. SI vous cherchez UN match@fathers.select {|f| f["age"] > 35 }.first
contre@fathers.detect {|f| f["age"] > 35 }
pour la performance et la lisibilité, mon vote va pourdetect
si votre tableau ressemble
Et vous voulez savoir si une valeur est déjà présente dans votre tableau. Utiliser la méthode Find
Cela retournera un objet si Hitesh est présent dans le nom sinon retourne nil
la source
"hitesh"
, il ne renverra pas le hachage. Comment pouvons-nous également tenir compte de la casse des mots dans de tels cas?