JavaScriptでMath関数を使わずに最小値を取得する方法
本記事では、任意の個数の数値リテラルを引数として受け取り、ライブラリ関数(Math.minなど)を一切使用せずに、その中から最も小さい数値を返す関数の作成方法を解説します。
この問題は、whileループを使ったシンプルな比較処理によって効率よく解決できます。以下に具体的な実装例を示します。
実装例
const numbers = [12, 5, 7, 43, -32, -323, 5, 6, 7, 767, 23, 7];
const findMin = (...numbers) => {
let min = Infinity, len = 0;
while(len++ < numbers.length){
min = numbers[len] < min ? numbers[len] : min;
}
return min;
};
console.log(findMin(...numbers));コードのポイント
- 初期値としてInfinityを設定することで、どんな数値とも正しく比較できるようにしています。
- 可変長引数(スプレッド演算子 ...)を使うことで、引数の個数に制限なく対応できます。
- 三項演算子を使い、現在の最小値より小さい値が見つかった場合のみ更新します。
出力結果
コンソールには以下のように表示されます。
-323
このように、Math.minのような組み込み関数に頼らなくても、ループと条件分岐を組み合わせるだけで、配列内の最小値を簡単に求めることができます。
-
JavaScriptのMath.log2()関数とは?使い方とサンプルコードを解説
Math.log2()関数とは JavaScriptのMath.log2()関数は、Mathオブジェクトに用意されているメソッドの一つで、引数として渡した数値の「2を底とする対数(log₂)」を返します。 つまり、「2を何乗するとその数値になるか」を求める関数です。例えばMath.log2(8)は「2の3乗が8」なので3を返し、Math.log2(1024)なら10を返します。 なお、この関数はES6(ECMAScript 2015)で追加された比較的新しいメソッドのため、古いブラウザでは利用できない場合があります。 構文 基本的な構文は次のとおりです。 Math.log2(数値); サン
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを