JavaScriptやTypeScriptで最大値、最小値を計算したい!
業務でNodeを使ってツールを作成した際に最大値、最小値を取得したい時がありましたのでまとめておきます。
- 合計を計算したい!
- 平均を取得したい!
- 中央値を取得したい!
という場合は、それぞれ記事にまとめておきましたのでこちらを参照してください!
最大値、最小値とは?
こちらは特に説明不要かと思いますが、最も大きな値を最大値、最も小さな値を最小値と言います。
最大値を計算する方法
for
まずは、一番基本的な最大値を計算する方法です。
for文とif文を使って最大値を求めていきます。
const array = [-1, 0, -2, 1, 2, 3, -3]
let max = 0
for (let i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i]
}
}
console.log(max)
// expected output: 3
if文を使わずに三項演算子を用いると短く描くことができます。
const array = [-1, 0, -2, 1, 2, 3, -3]
let max = 0
for (let i = 0; i < array.length; i++) {
max = array[i] > max ? array[i] : max
}
console.log(max)
// expected output: 3
forEach
こちらはforEachを使って最大値を計算する方法です。
forと比較すると、array[i]のように添字でアクセスしなくても良くなります。
const array = [-1, 0, -2, 1, 2, 3, -3]
let max = 0
array.forEach(num => {
max = num > max ? num : max
})
console.log(max)
// expected output: 3
Math.max
ここでは、Math.maxを使って最大値を計算する方法を紹介していきます!
以下がサンプルコードになります。
Math.maxを使うと簡単に求められることがわかります!
const array1 = [1, 2, 3, 4]
const max1 = Math.max(...array1)
console.log(max1)
// expected output: 4
const array2 = [-1, -2, -3, -4]
const max2 = Math.max(...array2)
console.log(max2)
// expected output: -1
さらに詳しいことは、MDNの公式サイトが参考になりますので、こちらをチェックしましょう!
Reduceを使用する方法
最大値の求め方
accumulatorがポイントになります。
MDNの公式サイトでは以下のような記載があります。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
accumulator
callback
の返値を蓄積するアキュームレーターです。これは、コールバックの前回の呼び出しで返された値、あるいはinitialValue
が指定されている場合はその値となります (以下を参照ください)。
reduceのaccumulatorは、コールバックの前回の呼び出しで返された値となるので、これを利用して、accumulatorに最大値の値を保持するようにします。
ソースコード
このように、accumulatorとcurrentValueを比較することで、最大値を求めることができます。
const array1 = [1, 2, 3, 4]
const max = array1.reduce((accumulator, currentValue) => accumulator > currentValue ? accumulator : currentValue)
console.log(max)
// expected output: 4
const array2 = [-1, -2, -3, -4]
const max2 = array2.reduce((accumulator, currentValue) => accumulator > currentValue ? accumulator : currentValue)
console.log(max2)
// expected output: -1
Math.maxとReduce両方を使用する方法
先ほどのReduceの処理で三項演算子を用いていた部分を都度Math.maxを用いて計算することもできます。(一見簡単にできて良いですが、パフォーマンス的には微妙かもしれないです)
const array1 = [1, 2, 3, 4]
const max = array1.reduce((accumulator, currentValue) => Math.max(accumulator, currentValue))
console.log(max)
// expected output: 4
const array2 = [-1, -2, -3, -4]
const max2 = array2.reduce((accumulator, currentValue) => Math.max(accumulator, currentValue))
console.log(max2)
// expected output: -1
最小値を計算する方法
for
こちらも一番基本的な最小値を計算する方法です。
for文とif文を使って最小値を求めていきます。
const array = [-1, 0, -2, 1, 2, 3, -3]
let min = 0
for (let i = 0; i < array.length; i++) {
if (array[i] < min) {
min = array[i]
}
}
console.log(min)
// expected output: -3
if文を使わずに三項演算子を用いると短く描くことができます。
const array = [-1, 0, -2, 1, 2, 3, -3]
let min = 0
for (let i = 0; i < array.length; i++) {
min = array[i] < min ? array[i] : min
}
console.log(min)
// expected output: -3
forEach
こちらはforEachを使って最大値を計算する方法です。
こちらもforと比較すると、array[i]のように添字でアクセスしなくても良くなります。
const array = [-1, 0, -2, 1, 2, 3, -3]
let min = 0
array.forEach(num => {
min = num < min ? num : min
})
console.log(min)
// expected output: -3
Math.min
ここでは、Math.minを使って最小値を計算する方法を紹介していきます!
以下がサンプルコードになります。
こちらもMath.minを使うと簡単に求められることがわかります!
const array1 = [1, 2, 3, 4]
const min1 = Math.min(...array1)
console.log(min1)
// expected output: 1
const array2 = [-1, -2, -3, -4]
const min2 = Math.min(...array2)
console.log(min2)
// expected output: -4
詳しいことは、MDNの公式サイトが参考になりますので、こちらをチェックしましょう!
Reduceを使用する方法
最小値の求め方
最大値と同様に、accumulatorがポイントになります。
先ほど同様に以下がMDNの公式サイトです。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
accumulator
callback
の返値を蓄積するアキュームレーターです。これは、コールバックの前回の呼び出しで返された値、あるいはinitialValue
が指定されている場合はその値となります (以下を参照ください)。
同様にreduceのaccumulatorは、コールバックの前回の呼び出しで返された値となるので、これを利用して、accumulatorに最小値の値を保持するようにします。
ソースコード
このように、accumulatorとcurrentValueを比較することで、最小値を求めることができます。
const array1 = [1, 2, 3, 4]
const min1 = array1.reduce((accumulator, currentValue) => accumulator < currentValue ? accumulator : currentValue)
console.log(min1)
// expected output: 1
const array2 = [-1, -2, -3, -4]
const min2 = array2.reduce((accumulator, currentValue) => accumulator < currentValue ? accumulator : currentValue)
console.log(min2)
// expected output: -4
Math.minとReduce両方を使用する方法
先ほどのReduceの処理で三項演算子を用いていた部分を都度Math.minを用いて計算することもできます。(こちらも一見簡単にできて良いですが、パフォーマンス的には微妙かもしれないです)
const array1 = [1, 2, 3, 4]
const min1 = array1.reduce((accumulator, currentValue) => Math.min(accumulator, currentValue))
console.log(min1)
// expected output: 1
const array2 = [-1, -2, -3, -4]
const min2 = array2.reduce((accumulator, currentValue) => Math.min(accumulator, currentValue))
console.log(min2)
// expected output: -4
まとめ
今回は、JavaScriptやTypeScriptでMax、Min(最大値、最小値)を計算する方法について纏めました。
色々な方法で最大値、最小値を求めることができるので、マスターしておきたいですね!
コメント