JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【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));

コードの解説

この関数の仕組みを順番に見ていきましょう。

  1. 引数のデフォルト値: min には Infinity(無限大)、max には -Infinity(負の無限大)を初期値として設定しています。これにより、最初に比較した任意の数字が必ず最小値・最大値として採用されます。
  2. 桁の取り出し: num % 10 で一番下の桁(1の位)の数字を取得し、Math.floor(num / 10) でその桁を取り除いた残りの数値を次の再帰呼び出しに渡します。
  3. 最小値・最大値の更新: Math.min()Math.max() を使って、これまでの最小値・最大値と現在の桁を比較し、新しい値を次の再帰へ引き継ぎます。
  4. 終了条件: num0(すべての桁を処理し終えた状態)になると再帰を終了し、max - min つまり最大桁と最小桁の差を返します。

出力結果

コンソールには以下のように出力されます。

3

入力された数値 44353456 の場合、最小の桁は 3、最大の桁は 6 であるため、差は 6 - 3 = 3 となり、正しい結果が得られていることがわかります。

  1. JavaScriptでスペース区切りの数値文字列から最大値と最小値を抽出する方法

    問題 今回実装するのは、スペースで区切られた複数の数値を含む文字列を引数として受け取るJavaScript関数です。関数は、文字列の中から最大の数値と最小の数値だけを抜き出し、それらをスペースで区切った1つの文字列として返す必要があります。 入力例: const str = 5 57 23 23 7 2 78 6; 出力例: const output = 78 2; これは、配列内の最大値が 78、最小値が 2 であるためです。 解決策:reduce() を使った実装 以下のコードでは、split() で文字列を配列に変換し、reduce() メソッドを使って1回の走査で最大値と最小値を同時

  2. JavaScriptで3桁の数字を並べ替えて最大の数を作る方法

    問題正の3桁の整数を1つ引数として受け取り、その各桁を並べ替えることで作れる最大の数を返すJavaScript関数を作成する必要があります。アプローチこの問題は、次の手順で解決できます。まず、入力された数値が実際に3桁であるかを検証します。100未満または999を超える場合は null を返します。数値を文字列に変換し、split() で1文字ずつの配列に分解します。sort((a, b) => b - a) を使って桁を降順に並べ替えます。これにより、大きい桁が先頭に来ます。join() で配列を文字列に結合し、単項プラス演算子(+)で数値型に戻して返します。コード例以下は上記のアプロ