从Ruby中的关联数组中找到最高值

时间:2014-09-03 12:29:01

标签: ruby hash

我有复杂的哈希,看起来像这样

 @hash =  {1=>[], 2=>[], 3=>[], 4=>[], 5=>[], 6=>[], 7=>[], 8=>[], 9=>[], 10=>[], 11=>[], 12=>[[{"value"=>1.58, "title"=>"sun", "quantity" => 2}], [{"value"=>1.99, "title"=>"sophia", "quantity" => 5}], [{"value"=>6.30, "title"=>"roam", "quantity" => 15}], [{"value"=>3.981, "title"=>"jia, "quantity" => 4"}], 13 => [], 14 => [], 15 => []}

现在我想提取最高价值以及相关的标题和数量。指数一直是15。

例如输出应为

@hash = { value => 6.30, title => "roam", quantity => 15 }

我正在搜索一些发现这个,但没有成功 参考链接Ref

帮助表示感谢

1 个答案:

答案 0 :(得分:1)

如果您对元素索引不感兴趣,可以将这些值展平并找到最大值:

@hash =  {
  1=>[], 2=>[], 3=>[], 4=>[], 5=>[], 6=>[], 7=>[], 8=>[], 9=>[],
  10=>[], 11=>[], 12=>[
    [{"value"=>1.58, "title"=>"sun", "quantity" => 2}],
    [{"value"=>1.99, "title"=>"sophia", "quantity" => 5}],
    [{"value"=>6.30, "title"=>"roam", "quantity" => 15}],
    [{"value"=>3.981, "title"=>"jia", "quantity" => "4"}]
  ],
  13 => [], 14 => [], 15 => []
}

@hash.values.flatten.max_by { |h| h["value"] }
#=> {"value"=>6.3, "title"=>"roam", "quantity"=>15}