我有复杂的哈希,看起来像这样
@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
帮助表示感谢
答案 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}