Рубиновый объект group_by? - PullRequest
7 голосов
/ 22 января 2011

У меня есть массив или другие объекты, и я хочу группировать по объектам.Например,

 => [#<Graphic id: 3...">, #<Collection id: 1....">, #<Category id:...">, #<Volume id: 15...">] 
 all.size
 => 4 

Я пытался

all.group_by(Object) 

, но это не сработало ... есть идеи, как группировать объекты в одном массиве?

1 Ответ

19 голосов
/ 22 января 2011

Вы хотите сделать что-то подобное?

all.group_by(&:class)

Который сгруппирует объекты в массиве по имени класса

РЕДАКТИРОВАТЬ для комментария

all.group_by(&:class).each do |key, group|
   group.each{|item| puts item}
end

Ключ - это элемент группировки, а obj - это коллекция для ключа, поэтому он будет проходить по каждой группе в группе и перечислять объекты в этой группе

Также вы можете довольно легко сортировать по группам

all.group_by(&:class).each do |key, group|
    group.sort_by(&:attribute).each{|item| puts item}
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...