查找具有特定属性的最大值的Ruby数组的元素

Ric*_*kes 76 ruby

对这个问题可能有一个非常简单的答案,但我现在不能为我的生活搞清楚.如果我有一个特定类型对象的ruby数组,并且它们都有一个特定的字段,我如何找到该字段的元素具有该字段的最大值?

Dav*_*son 140

array.max_by do |element|
  element.field
end
Run Code Online (Sandbox Code Playgroud)

要么:

array.max_by(&:field)
Run Code Online (Sandbox Code Playgroud)


p.m*_*los 27

这有帮助吗?

my_array.max {|a,b| a.attr <=> b.attr }
Run Code Online (Sandbox Code Playgroud)

(我假设你的领域有名字attr)

  • 我更喜欢使用`max_by`,因为它更易于使用:块只接受一个参数,你不必显式使用太空船(`<=>`)运算符. (2认同)