配列の中から最大値・最小値を求める
配列の中から最大値・最小値を求めるには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"