【JavaScript】数値の最大桁と最小桁の差を求める方法
今回は、数値を引数として受け取り、その数値に含まれる最大の桁(数字)と最小の桁(数字)の差を返すJavaScript関数を作成します。
問題の例
たとえば、数値が 5464676 の場合を考えてみましょう。
- 最小の桁:4
- 最大の桁:7
したがって、この関数が返すべき出力は 7 - 4 = 3 となります。
実装コード
この関数は、再帰処理を使って下の桁から順に各数字を取り出し、その都度最小値と最大値を更新していくことで実現できます。
const num = 44353456;
const difference = (num, min = Infinity, max = -Infinity) => {
if(num){
const digit = num % 10;
return difference(Math.floor(num / 10), Math.min(digit, min),
Math.max(digit, max));
};
return max - min;
};
console.log(difference(num));コードの解説
この関数の仕組みを順番に見ていきましょう。
- 引数のデフォルト値:
minにはInfinity(無限大)、maxには-Infinity(負の無限大)を初期値として設定しています。これにより、最初に比較した任意の数字が必ず最小値・最大値として採用されます。 - 桁の取り出し:
num % 10で一番下の桁(1の位)の数字を取得し、Math.floor(num / 10)でその桁を取り除いた残りの数値を次の再帰呼び出しに渡します。 - 最小値・最大値の更新:
Math.min()とMath.max()を使って、これまでの最小値・最大値と現在の桁を比較し、新しい値を次の再帰へ引き継ぎます。 - 終了条件:
numが0(すべての桁を処理し終えた状態)になると再帰を終了し、max - minつまり最大桁と最小桁の差を返します。
出力結果
コンソールには以下のように出力されます。
3
入力された数値 44353456 の場合、最小の桁は 3、最大の桁は 6 であるため、差は 6 - 3 = 3 となり、正しい結果が得られていることがわかります。
-
JavaScriptでスペース区切りの数値文字列から最大値と最小値を抽出する方法
問題 今回実装するのは、スペースで区切られた複数の数値を含む文字列を引数として受け取るJavaScript関数です。関数は、文字列の中から最大の数値と最小の数値だけを抜き出し、それらをスペースで区切った1つの文字列として返す必要があります。 入力例: const str = 5 57 23 23 7 2 78 6; 出力例: const output = 78 2; これは、配列内の最大値が 78、最小値が 2 であるためです。 解決策:reduce() を使った実装 以下のコードでは、split() で文字列を配列に変換し、reduce() メソッドを使って1回の走査で最大値と最小値を同時
-
JavaScriptで3桁の数字を並べ替えて最大の数を作る方法
問題正の3桁の整数を1つ引数として受け取り、その各桁を並べ替えることで作れる最大の数を返すJavaScript関数を作成する必要があります。アプローチこの問題は、次の手順で解決できます。まず、入力された数値が実際に3桁であるかを検証します。100未満または999を超える場合は null を返します。数値を文字列に変換し、split() で1文字ずつの配列に分解します。sort((a, b) => b - a) を使って桁を降順に並べ替えます。これにより、大きい桁が先頭に来ます。join() で配列を文字列に結合し、単項プラス演算子(+)で数値型に戻して返します。コード例以下は上記のアプロ