こたつとみかんとプログラミング

33才実務未経験ですがウェブエンジニアにジョブチェンジするために勉強したことをアップするためのブログです。

ruby で配列の最大値・最小値を取得する

配列から最大値、最小値を取得する際は、max, min が使える。

array = [110,21,13,24,15]
# 要素の最大値を取得
p array.max
# => 110
p array.max(3)
# => [110, 24, 21]

# 要素の最小値を取得
p array.min
# => 13
p array.min(3)
# => [13, 15, 21]

# 文字列の場合
array = ["110","21","13","24","15"]

# 文字列はアルファベット順に評価されてしまう
p array.max          
# => "24"
p array.max(3)
# => ["24", "21", "15"]
p array.min
# => "110"
p array.min(3)
# => ["110", "13", "15"]

# 数値が文字列になっている場合は変換する
p array.map(&:to_i).max
p array.map(&:to_i).max(3)
p array.map(&:to_i).min
p array.map(&:to_i).min(3)

条件付きの最大値・最小値の取得は、max_by, min_by を使う。

array = ["banana", "orange", "melon", "strawberry", "grape"]
p array.max_by { |x| x.length }   
# => "strawberry"
p array.min_by { |x| x.length } 
# => "melon"