У меня есть массив хэш:Удалить подобные объекты из массива
[{ item_id: 1, relationship_1: 1, relationship_2: 1, value: 'go' },
{ item_id: 2, relationship_1: 2, relationship_2: 2, value: 'stop' },
{ item_id: 3, relationship_1: 2, relationship_2: 1, value: 'stop' }, #remove
{ item_id: 4, relationship_1: 3, relationship_2: 1, value: 'go' },
{ item_id: 5, relationship_1: 1, relationship_2: 2, value: 'go' }] #remove
Я хочу линию комментируемой быть удалено. Необходимо удалить все линии, имеющие relationship_1
и value
. Единственный способ, которым я могу думать, это:
items.each do |i|
items.each do |k|
if i.item_id != k.item_id and i.relationship_1 == k.relationship_1 and i.value == k.value
items.remove(k)
end
end
end
Это не работает должным образом. Какой самый «рубиновый» способ удалить эти оскорбительные элементы?
Как вы определяете "похожие"? Также читайте о [разнице между '&&'/'||' & 'и'/'или' в Ruby] (http://devblog.avdi.org/2010/08/02/using-and-and- или-в-рубиновый /). Они не одинаковы. –
В этом случае я имею в виду, что, имея определенный набор значений, которые равны, на самом деле не было лучшего способа сформулировать его в названии. –