Ruby中的Uniq对象属性是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

选择数组中与一个或多个属性有关的唯一对象的最好方法是什么?

这些对象存储在ActiveRecord中,所以使用AR的方法也可以。

提问于
用户回答回答于
用户回答回答于

将该uniq_by方法添加到Array。

uniq_array = my_array.uniq_by {|obj| obj.id}
class Array
  def uniq_by(&blk)
    transforms = []
    self.select do |el|
      should_keep = !transforms.include?(t=blk[el])
      transforms << t
      should_keep
    end
  end
end

请注意,它会返回一个新数组,而不是修改当前的数组

改进型代码

class Array
  def uniq_by(&blk)
    transforms = {}
    select do |el|
      t = blk[el]
      should_keep = !transforms[t]
      transforms[t] = true
      should_keep
    end
  end
end

扫码关注云+社区