如何获取具有最大值的数组的唯一元素

kua*_*tro 3 ruby arrays

我有一个对象数组:

[{id:1, price:10},{id:2, price:9},{id:3, price:8},{id:1, price:7}]
Run Code Online (Sandbox Code Playgroud)

现在,如何获取具有唯一 id 的数组,但在具有相同 id 的两个对象之间进行选择时,如何获取最大值 ( {id:1, price:10})?

预期结果:

[{:id=>1, :price=>10}, {:id=>2, :price=>9}, {:id=>3, :price=>8}]
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 5

也许是这样的?

a = [
    {id:1, price:10},
    {id:2, price:9},
    {id:3, price:8},
    {id:1, price:7}
]

b = a.group_by{|h| h[:id]}. 
      map{|_, v| v.max_by {|el| el[:price]}}

b # => [{:id=>1, :price=>10}, {:id=>2, :price=>9}, {:id=>3, :price=>8}]
Run Code Online (Sandbox Code Playgroud)