私はRubyにオブジェクトの配列を持っていますが、すでに処理されている名前を持つすべてのオブジェクトを無視して反復処理します。例えば:これは私には非常にまっすぐ進むとは思えないので、私はRuby:オブジェクトの配列を反復し、重複する属性を持つアイテムを無視する
processed = []
items.each do |item|
next if processed.include?(item.name)
processed << item.name
# Output ...
:
[
#<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"
]
可能(ただし、厄介な)の溶液に減少させるべきです代替案を探しています。もう1つの解決策は、すべてをハッシュに格納し、その名前をインデックスとして使用することです。しかし、それは2回反復する必要があり、また最も洗練された解決策ではないようです。誰かがエレガントに反復する方法を知っていれば素晴らしいだろう。
種類よろしく、セバスチャン
PS:私はちょうど同じname属性を持つ他のすべての項目は、実際に処理アイテムに知らなければならないことに気づきました。だから私の解決策はそれでは機能しません。 :-(
は、同じ名前を持つオブジェクト、同じオブジェクトであるか、彼らはいくつかの他の特性が異なってやる – Dogbert
私は性質を残し得るために? – YMMD