나는 루비에 객체 배열을 가지고 있으며, 이미 처리 된 이름을 가진 모든 객체를 무시하면서 반복하고 싶습니다. 예를 들어 : 이것은 나에게 매우 정직하지 않는 것 때문에 난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"
]
에 가능한 (그러나 불쾌한) 솔루션을 줄여야한다 대안을 찾고 있습니다. 또 다른 솔루션은 모든 것을 해시에 저장하고 이름을 색인으로 사용하는 것입니다. 그러나 그것은 두 번 반복하는 것을 요구할 것이고 또한 가장 우아한 해결책 인 것처럼 보이지 않습니다. 누군가가 우아하게 반복하는 방법을 알고 있다면 그것은 대단 할 것입니다.
친절 감사, 세바스찬
PS : 난 그냥 같은 이름을 가진 다른 모든 항목이 실제로 처리 항목 알려진해야하는 속성 것을 깨달았다. 그래서 제 해결책은 그걸 해결하지 못할 것입니다. :-(
이 동일한 이름을 가진 객체, 같은 개체 아니면 다른 어떤 속성에 차이가 할 – Dogbert
내가 속성을 남겨 얻기 위해? 단순함. 죄송합니다. 실수 일 수 있습니다. 좀 더 이해하기 쉽도록 속성을 추가했습니다. – YMMD