【GAS GoogleAppsScript | スプレッドシート】配列の要素の最大値や最小値を求める(Mathオブジェクトのmaxメソッド・minメソッド&applyメソッド)

スポンサーリンク

配列の要素の最大値や最小値を求める

プログラムを作成していると、配列で取得したデータの要素の中で、一番大きいものや、一番小さいものを取り出したい場面が多く出てきます。

Mathオブジェクトには、maxメソッド、minメソッドという、引数に指定した数値の最大値や最小値を取り出すメソッドがありますが、残念ながら配列には対応していません。

ということで、今回は配列で取得したデータの最大値と最小値を取り出す方法を紹介したいと思います!

※Mathオブジェクトについては以下の記事で紹介しています。

applyメソッドを組み合わせて使う

Mathオブジェクトのmaxメソッド・minメソッドを使って、配列の要素の最大値や最小値を取り出したい場合、配列を引数の形に変換する必要がります。

配列を引数の形に変換するには、Functionオブジェクトのapplyメソッドを利用します。

構文

Functionオブジェクト.apply(this [, ary])

applyメソッドは、引数に指定した「this」と配列「ary」を渡して関数を実行するメソッドです。

ちょっと分かりにくいので、ここでは配列の最大値と最小値を取り出すときに次のように書くんだとおぼえてもらえれば良いかと思います。

maxメソッド・minメソッドとapplyメソッドを組み合わせて、配列の最大値・最小値を取り出すプログラムの書き方

Math.max.apply(null, arry)

Math.min.apply(null, arry)

具体的なサンプルで確認しましょう。

function test() {
  
  // 配列を用意する
  var nums = [1,6,3,19,4,9]

  // 最大値と最小値を求める
  Logger.log(Math.max.apply(null, nums))  // 19.0
  Logger.log(Math.min.apply(null, nums))  // 1.0
  
}

applyメソッドで、配列「nums」を引数の形に変換してからmaxメソッド・minメソッドに渡しているイメージです。

まとめ

配列でデータを取得して、その中の最大値・最小値を取り出すケースは頻繁に出てくるので、使ってみてくださいね!