Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何获取属性值最大的数组的唯一元素_Ruby_Arrays - Fatal编程技术网

Ruby 如何获取属性值最大的数组的唯一元素

Ruby 如何获取属性值最大的数组的唯一元素,ruby,arrays,Ruby,Arrays,我有一个对象数组: [{id:1, price:10},{id:2, price:9},{id:3, price:8},{id:1, price:7}] 现在,如何获取具有唯一id的数组,但如果在具有相同id的两个对象之间进行选择,则获取最大值({id:1,price:10}) 预期结果: [{:id=>1, :price=>10}, {:id=>2, :price=>9}, {:id=>3, :price=>8}] 也许是这样的 a = [ {i

我有一个对象数组:

[{id:1, price:10},{id:2, price:9},{id:3, price:8},{id:1, price:7}]
现在,如何获取具有唯一id的数组,但如果在具有相同id的两个对象之间进行选择,则获取最大值(
{id:1,price:10}

预期结果:

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

也许是这样的

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}]
我会使用和


@是啊!!先把它分类。。最多的条目将按价格排列,然后按id收集uniq元素:)
a = [{id:1, price:10},{id:2, price:9},{id:3, price:8},{id:1, price:7}]
a.sort_by { |h| -h[:price] }.uniq { |h| h[:id] }
# => [{:id=>1, :price=>10}, {:id=>2, :price=>9}, {:id=>3, :price=>8}]