我有一個ruby對象數組,我想遍歷它,忽略每個對象,它的名字已經被處理。例如: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:我只是意識到所有其他項目具有相同名稱的屬性必須是已知的實際處理項目。所以我的解決方案甚至不會爲此工作。 :-(
具有相同名稱的對象,相同的對象還是他們在一些其他財產不同 – Dogbert
我離開的屬性了,以獲得?簡單,對不起,這可能是錯誤的,我只是添加了一些屬性,使其更容易理解 – YMMD