我有一个 Ruby 对象数组,我想要遍历它,忽略已经处理过的名称。例如:
应该减少为:
一种可能的(但不良)解决方案:
这对我来说似乎不是很直接,所以我在寻找替代方案。另一种解决方案是将所有内容存储在哈希表中,并使用名称作为索引。但这需要迭代两次,也不是最优雅的解决方案。如果有人有想法如何优雅地迭代的话那就太棒了。
顺祝商祺,塞巴斯蒂安
PS:我刚意识到所有具有相同名称属性的其他项目实际上都必须已知于正在处理的项目。因此,我的解决方案甚至无法解决这个问题。 :-(
[
#<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:我刚意识到所有具有相同名称属性的其他项目实际上都必须已知于正在处理的项目。因此,我的解决方案甚至无法解决这个问题。 :-(