J'ai un tableau de hachages qui ressemble à ceci:Comment puis-je trier ce tableau de hachages en utilisant un tableau secondaire de chaînes?
user_array = [<#Hashie::Mash id="1" name="Ben">, <#Hashie::Mash id="2" name="Scott">, <#Hashie::Mash id="3" name="David">]
Et j'ai aussi un tableau qui contient les ID tirés d'une source externe:
freq_array = ["1","2","2","3","2","3"]
Je dois utiliser freq_array
pour commander user_array
, de sorte que l'utilisateur dont l'ID apparaît le plus dans freq_array
est le premier dans le. Donc, sur la base freq_array
ci-dessus, user_array
serait
user_array = [<#Hashie::Mash id="2" name="Scott">, <#Hashie::Mash id="3" name="David">, <#Hashie::Mash id="1" name="Ben">]
Quelle est la meilleure façon de le faire? Merci d'avoir lu.
EDIT: Le format des hachages user_array est incorrect. Avoir corrigé.
'user_array.sort_by {| utilisateur | -freq_array.count (user ["id"])} ' – Nakilon
c'est plus court;) Je peux aussi le rendre plus lisible:' user_array.sort_by {| user | freq_array.count (utilisateur ["id"])} .reverse' C'est plus lent, mais plus clair ce qui se passe imho – iain
Merci pour les réponses les gars. Le compte fonctionne bien, mais le user_array n'est pas du tout commandé. J'ai réalisé que chaque entrée dans le user_array a l'air légèrement différente de la façon dont j'ai montré dans la question. J'ai modifié la question pour refléter cela. – ben