我有一个哈希数组:
[{ 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”方法是什么?
最佳答案
不幸的是,uniq_by
在 Ruby 核心中不可用。使用 require 'activesupport'
将其拉入。
items.uniq_by {|h| [h[:replationship_1], h[:value]] }
编辑:正如下面@mu 所指出的,Ruby 1.9 的 uniq
也有效:
items.uniq{|h| [h[:replationship_1], h[:value]] }
关于ruby - 从数组中删除相似的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689353/