2013-07-07 11 views
13

Mam tablicę składającą się z mieszań w następującej formie:Grupa tablica skrótów przez kluczowego

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

Czy istnieją dogodne sposoby, aby podzielić grupę według wartości klucza użytkownika? Końcowy wynik powinien wyglądać mniej więcej tak:

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

Jak uzyskać te dane? Z zapytania bazy danych? Jeśli tak, powinieneś zrobić "group by" w zapytaniu, a nie po fakcie. –

Odpowiedz

29

Użyj group_by.

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

Precyzyjnie. +1. Właśnie takie rzeczy, o które Ruby się nie kręci. – Borodin