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

【JavaScript】数値の各桁を2乗して連結する新しい数値を返す方法

本記事では、数値を受け取り、その各桁をそれぞれ2乗した結果を連結して新しい数値を返すJavaScript関数の実装方法を解説します。

要件の確認

作成する関数は以下のような動作を行います。

  • 引数として数値を受け取る
  • 各桁の数字を個別に2乗する
  • 2乗した結果を順番に連結し、新しい数値として返す

具体例

入力が 9119 の場合を考えてみましょう。

9119

この場合、出力は次のようになります。

811181

これは、先頭の「9」の2乗が 81、「1」の2乗が 1(残りの2桁も同様)であり、それらを連結すると 811181 になるためです。

実装コード

以下が実際のコード例です。

const num = 9119;

const squared = num => {
    // 数値を文字列に変換して各桁にアクセスできるようにする
    const numStr = String(num);
    let res = '';

    for(let i = 0; i < numStr.length; i++){
        // 各桁を数値化して2乗を計算
        const square = Math.pow(+numStr[i], 2);
        // 結果を連結
        res += square;
    };

    return res;
};

console.log(squared(num));

コードの解説

このコードの処理の流れを順番に見ていきましょう。

  1. 文字列への変換: String(num) を使って数値を文字列に変換します。これにより、インデックスを使って各桁に個別にアクセスできるようになります。
  2. 各桁の2乗計算: for ループで各桁を走査し、単項プラス演算子 + で文字を数値に戻してから Math.pow() により2乗します。
  3. 結果の連結: 計算結果を文字列として res に追加していき、最終的な連結結果を返します。

出力結果

このコードを実行すると、コンソールには次の出力が表示されます。

811181

補足:より簡潔な書き方

mapjoin を活用すれば、同じ処理をより簡潔に記述することもできます。

const squared = num =>
    String(num)
        .split('')
        .map(digit => (+digit) ** 2)
        .join('');

console.log(squared(9119)); // 811181

用途に応じて、ループ版と関数型スタイルのどちらを選択しても問題ありません。

  1. JavaScriptのNumber()関数とは?使い方とサンプルコードを解説

    JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを

  2. JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】

    本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む