Comment trier un tableau de hachages en ruby
J'ai un tableau, dont chacun des éléments est un hachage avec trois paires clé/valeur:
:phone => "2130001111", :zip => "12345", :city => "sometown"
Je voudrais trier les données par zip
de sorte que tous les phone
s dans la même région sont ensemble. Ne Rubis ont un moyen facile de le faire? Peut will_paginate
de paginer les données dans un tableau?
- Si vous êtes à la génération de la matrice, plutôt que d'être un donné, envisager de faire un hachage au lieu de cela, avec des éléments (par exemple)
[city,zip]=>phone
oucity=>{zip1=>[<phones>], zip2=>...}
.
Vous devez vous connecter pour publier un commentaire.
Simples:
Remarque:
Lors de l'utilisation de
sort_by
vous devez affecter le résultat à une variable:array_of_hashes = array_of_hashes.sort_by{}
sinon, vous pouvez utiliser le "bang" méthode pour modifier en place:array_of_hashes.sort_by!{}
sort_by
vous devez affecter le résultat à une variable:array_of_hashes = array_of_hashes.sort_by{}
sinon, vous pouvez utiliser le "bang" méthode pour modifier en place:array_of_hashes.sort_by!{}
array_of_hashes.sort_by(&:zip)
.sort_by { |hsh| hsh.zip }
et donc ça ne marchera que si.zip
est définie comme une méthode sur chaque Hachage. Par défaut, les hachages de ne pas exposer leurs clés que les méthodes, donc je suppose que vous avez probablement eu quelque chose d'autre se passe là-bas.array_of_hashes.sort_by!(&:zip)
.zip
et[:zip]
les deux fonctionneront. ActiveRecords ont à la fois le style défini.Utiliser le bang à modifier en place le tableau:
Ou de ré-affecter:
Noter que sort_by méthode de tri par ordre croissant.
Si vous avez besoin de trier en ordre décroissant, vous pourriez faire quelque chose comme ceci:
ou
&:
est un raccourci pourmethod
, pasattribute
! Vous êtes en supposant que la valeur de Hachage a des méthodes reflétant les attributs..reverse
méthode :pSi vous voulez de la pagination pour les données dans le tableau vous devez vous require 'will_paginate/array' dans votre contrôleur
Si vous avez Imbriquée de Hachage (Hachage à l'intérieur d'un hachage format) comme des éléments d'un Tableau (une structure comme la suivante) et que vous souhaitez trier par clé (date ici)
Utilisation de la Matrice de 'sort_by méthode que