配列の中から最大値・最小値を求める
配列の中から最大値・最小値を求めるにはArray#max
、Array#min
を使う。
p [1, 2, 3, 4, 5].max #=> 5 p [1, 2, 3, 4, 5].min #=> 1
デフォルトでは最大値・最小値を求めるための比較は<=>
で行われる。ブロックを渡すと比較の処理を置き換えることができる。例えば文字列を数値化して比較するには以下のように書ける。
p ["1", "2", "3", "4", "5"].max{|a, b| a.to_i <=> b.to_i } #=> "5" p ["1", "2", "3", "4", "5"].min{|a, b| a.to_i <=> b.to_i } #=> "1"
上記ではArray#max
とArray#min
を使ったが、比較の前にオブジェクトを事前に変換するのであれば、Array#max_by
とArray#min_by
を使って、同様の処理が以下のように書ける。
p ["1", "2", "3", "4", "5"].max_by{|o| o.to_i } #=> "5" p ["1", "2", "3", "4", "5"].min_by{|o| o.to_i } #=> "1"