Comment faire une recherche dans un tableau de hachages par les valeurs de hachage en ruby?
J'ai un tableau de hachages, @pères.
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 retourne un tableau de hachages pour qui un bloc renvoie vrai?
Par exemple:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Grâce.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour Énumérable#sélectionnez (également appelé
find_all
):Par la documentation, il "retourne un tableau contenant tous les éléments de [l'énumérable, dans ce cas
@fathers
] pour le bloc n'est pas faux."@fathers.find {|father| father["age"] > 35 }
à la place.father["unique_id"] == 35
et pas>
et nous utilisons un id unique, au lieu de l'âge ? Toutes les suggestions ? Je wan pour trouver le père avec cet identifiant.revenir premier match
#select
- Mais tout va pour votre cas d'utilisation.#detect
sera de retournil
si aucune correspondance n'est trouvée, alors que#select
, dans @Jordan réponse, sera de retour[]
.find
au lieu dedetect
pour un code plus lisiblefind
peut prêter à confusion dans les rails, cependant.select
etdetect
ne sont pas les mêmes,select
sera transversale de l'ensemble du tableau, alors quedetect
s'arrêtera dès que la première correspondance est trouvée. SI vous êtes à la recherche pour UN match@fathers.select {|f| f["age"] > 35 }.first
vs@fathers.detect {|f| f["age"] > 35 }
pour les performances 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. L'Utilisation De La Méthode Find
Ce sera le retour de l'objet si Hitesh est présent dans le nom sinon retourner nil
"hitesh"
, il l'habitude de retourner la valeur de hachage. Comment peut-on rendre compte de mot boîtier ainsi, dans de tels cas?