У меня есть массив объектов в ruby, и я хочу перебрать его, игнорируя каждый объект, имя которого уже было обработано.Например:
[
#<Item name: "Item 1", content: "a">,
#<Item name: "Item 1", content: "b">,
#<Item name: "Item 2", content: "c">,
#<Item name: "Item 3", content: "d">,
#<Item name: "Item 3", content: "e">
]
Должно быть уменьшено до
[
#<Item name: "Item 1">, # Should know that it belongs to content: "a" and "b"
#<Item name: "Item 2">, # Should know that it belongs to content "c"
#<Item name: "Item 3"> # Should know that it belongs to content: "d" and "e"
]
Возможное (но неприятное) решение:
processed = []
items.each do |item|
next if processed.include?(item.name)
processed << item.name
# Output ...
Это не кажется очень простым дляя и так ищу альтернативу.Другим решением было бы хранить все в хэше и использовать имя в качестве индекса.Но это потребовало бы повторения дважды, и, похоже, не самое элегантное решение.Было бы здорово, если бы у кого-то была идея, как элегантно повторять.
С уважением, Себастьян
PS : Я только что понял, что все остальные предметы содин и тот же атрибут имени должен быть известен фактически обработанному элементу .Так что мое решение даже не сработает для этого.: - (