2010-09-09 5 views
3

J'ai un tableau d'objets @objects et je voudrais le diviser en un tableau de tableaux basé sur un paramètre, pour finir par un tableau où chaque entrée est un tableau d'objets tous dont ont object.property la même chose.Diviser un tableau d'objets par des paramètres communs dans Ruby

@objects = [obj1, obj2, obj3, obj4, obj5] 
obj1.property = a 
obj2.property = a 
obj3.property = b 
obj4.property = b 
obj5.property = c 
array = [[obj1, obj2,], [obj3, obj4], [obj5]] 

Répondre

7
@objects.group_by { |obj| obj.property }.values 
+0

Vous devez être sur Ruby 1.9 pour cela (sinon le tableau peut être dans un ordre erroné). – steenslag

+2

Vous pouvez réduire group_by {| obj | obj.property} à group_by (&: propriété) – Samuel

+0

Got ruby ​​1.9.2p0, fonctionne parfaitement merci. Doit regarder plus dur la prochaine fois! – user443598

Questions connexes