我正在使用Rails 5和Ruby 2.4我有一个对象数组,每个对象都有字段
name
member_id
我希望扫描我的数组并删除重复的项目,taht is,其字段“name”和“member_id”已经匹配teh数组中的其他项目。我该怎么做呢?我意识到我可以使用
检查数组是否已经包含一个项目results.any?{|a| a.name.eql?(name) && a.member_id == member_id}
但我不确定如何使用上述方法来消除重复。此外,如果有重复项,我仍然希望保留其中一个具有唯一名称/ member_id组合的项目。
答案 0 :(得分:0)
Ruby的uniq
是一个选项。例如,假设我想比较下面的子数组元素在子索引0和2处的值。我可以创建一个由这些项组成的比较对象,并将其与uniq
的块选项一起使用:
a = [
['one', 1, 1],
['two', 2, 2],
['one', 2, 1],
['two', 2, 2],
['one', 1, 2],
]
p a.uniq { |elt| [elt[0], elt[2]] } # => [["one", 1, 1], ["two", 2, 2], ["one", 1, 2]]