如果多个具有相同的最大值,则获得最大值作为数组

rub*_*nce 3 ruby ruby-on-rails max

Ruby已经Enumerable#maxEnumerable#max_by我一起使用max_by以下方式.

array = [
           {:a => 1, :b => 2, :c => 3}, 
           {:a => 3, :b => 2, :c => 4}, 
           {:a => 3, :b => 1, :c => 4}
        ]
max_item = array.max_by { |item| item[:b] }
=> {:b=>2, :c=>3, :a=>1}
Run Code Online (Sandbox Code Playgroud)

因此,它将返回单个最大值(我认为是第一个),即使有2个项具有相同的最大值.我想实现一个函数,在这种情况下给出两个项目.是否有其他变体max_by或者我需要从头开始为此编写?

ste*_*lag 9

array = [
           {:a => 1, :b => 2, :c => 3}, 
           {:a => 3, :b => 2, :c => 4}, 
           {:a => 3, :b => 1, :c => 4}
        ]

array.group_by{|el| el[:b]}.max.last 
#=>[{:a=>1, :b=>2, :c=>3}, {:a=>3, :b=>2, :c=>4}]
Run Code Online (Sandbox Code Playgroud)

group_by 工作有点太难了,但它确实提供了.