2013-07-07 12 views
13

Ho un array costituito da hash nella forma seguente:matrice Gruppo di hash per chiave

[ 
    {:user=>"mike" etc}, 
    {:user=>"mike" etc}, 
    {:user=>"peter" etc}, 
    {:user=>"joe" etc} 
] 

Esistono modi convenienti per dividere il gruppo in base al valore della chiave utente? Il risultato finale dovrebbe essere qualcosa di simile:

[ 
    [{:user=>"mike" etc}, {:user=>"mike" etc}], 
    [{:user=>"peter" etc}], 
    [{:user=>"joe" etc}] 
] 
+2

Come si ottengono i dati? Da una query del database? Se è così, dovresti fare un 'group by' nella tua query piuttosto che dopo il fatto. –

risposta

29

Usa group_by.

array.group_by{|h| h[:user]}.values 
+6

Precisamente. +1. Solo il genere di cose a cui Ruby non fa storie. – Borodin

Problemi correlati