【发布时间】:2011-11-07 16:00:03
【问题描述】:
这个问题可能有一个非常简单的答案,但我现在无法弄清楚。如果我有一个特定类型对象的 ruby 数组,并且它们都有一个特定的字段,我如何找到该数组中具有该字段最大值的元素?
【问题讨论】:
标签: ruby
这个问题可能有一个非常简单的答案,但我现在无法弄清楚。如果我有一个特定类型对象的 ruby 数组,并且它们都有一个特定的字段,我如何找到该数组中具有该字段最大值的元素?
【问题讨论】:
标签: ruby
array.max_by do |element|
element.field
end
或者:
array.max_by(&:field)
【讨论】:
这有帮助吗?
my_array.max {|a,b| a.attr <=> b.attr }
(我假设您的字段名称为attr)
【讨论】:
max_by,因为它使用起来更简单:该块只接受一个参数,您不必显式使用太空飞船 (<=>) 运算符。
您也可以对数组进行排序,然后得到最大值、最小值、第二大值等。
array = array.sort_by {|k,v| v}.reverse
puts hash[0]["key"]
【讨论】:
O(n)。最小排序为O(n log n)。除非需要,否则不要使用它,因为这会造成一些不必要的性能损失。