2014-09-03 147 views
-4

从相关阵列最高值我有复杂的哈希看起来像这样查找红宝石

@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 } 

我searhcing一些发现这一点,但并没有使其工作 参考链接Ref

帮助表示赞赏感谢

+2

该哈希无效的Ruby。 – August 2014-09-03 12:35:51

+0

也许这样:'@hash = {1 => [],2 => [],3 => [],4 => [],5 => [],6 => [],7 => [ ,8 => [],9 => [],10 => [],11 => [],12 => [[{“value”=> 1.58,“title”=>“sun” =>“},[{”value“=> 1.99,”title“=>”sophia“,”quantity“=> 5}],[{”value“=> 6.30, ,“quantity”=> 15}],[{“value”=> 3.981,“title”=>“jia”,“quantity”=> 4}]],13 => [],14 => [ 15 => []}'你是否有效的散列? – Surya 2014-09-03 13:39:01

回答

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} 
+0

谢谢,但我不能删除元素的索引..有没有其他方式来解决这个问题 – 2014-09-03 14:22:48

+0

@JNI_OnLoad你的预期输出是什么? – Stefan 2014-09-03 14:25:18

+0

我只需要最高的价值与确定的标题和数量...我过滤数据1天后创建了这个散列我希望现在你明白为什么我需要元素... – 2014-09-03 14:27:19