最大値と最小値の求め方について


メソッドa,b,c,dがあり、  
'a'の結果が{"symbol"=>"A", "number"=>2.0}  
'b'の結果が{"symbol"=>"B", "number"=>0.3}  
'c'の結果が{"symbol"=>"C", "number"=>-0.5}  
'd'の結果が{"symbol"=>"D", "number"=>-1.7}  
と返ってきた場合"number"の最大値と最小値を求めて結果は"symbol"で表示したいと考えています。

a~dを配列でまとめ、maxを使用したら最大値ではないものが、minを使用したら最小値ではないものが返ってきてなかなかうまくいきません。  
また"number"の最大値・最小値を求め、結果はそれぞれのペアである"symbol"で表示したいと思っているのですが、やり方が全く思い浮かびません。  
なにかアドバイス頂けたらありがたいです。




メソッドの`max`、`min`にはそれぞれブロックを渡せるのでそれを利用すると解決出来そうです。

<https://ref.xaio.jp/ruby/classes/enumerable/max>  
<https://ref.xaio.jp/ruby/classes/enumerable/min>

以下のコードで変数`max`、`min`にハッシュが入っているのであとはsymbolで出力出来るかと思います。  
Ruby2.5.0で確認しました。

[code]

    a = {"symbol"=>"A", "number"=>2.0}
    b = {"symbol"=>"B", "number"=>0.3}
    c = {"symbol"=>"C", "number"=>-0.5}
    d = {"symbol"=>"D", "number"=>-1.7}
    max = [a, b, c, d].max{|a, b| a["number"].to_f <=> b["number"].to_f}
    min = [a, b, c, d].min{|a, b| a["number"].to_f <=> b["number"].to_f}
    max["symbol"] # => "A"
    min["symbol"] # => "D"
    
[/code]




メソッドの`max`、`min`にはそれぞれブロックを渡せるのでそれを利用すると解決出来そうです。

<https://ref.xaio.jp/ruby/classes/enumerable/max>  
<https://ref.xaio.jp/ruby/classes/enumerable/min>

以下のコードで変数`max`、`min`にハッシュが入っているのであとはsymbolで出力出来るかと思います。  
Ruby2.5.0で確認しました。

[code]

    a = {"symbol"=>"A", "number"=>2.0}
    b = {"symbol"=>"B", "number"=>0.3}
    c = {"symbol"=>"C", "number"=>-0.5}
    d = {"symbol"=>"D", "number"=>-1.7}
    max = [a, b, c, d].max{|a, b| a["number"].to_f <=> b["number"].to_f}
    min = [a, b, c, d].min{|a, b| a["number"].to_f <=> b["number"].to_f}
    max["symbol"] # => "A"
    min["symbol"] # => "D"
    
[/code]

