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

JavaScriptで数値を位の値ごとに配列へ展開する方法

はじめに

数値(例えば 123)を引数として受け取り、その各桁の位の値を要素とする配列 [100, 20, 3] を出力する関数を作成する方法を紹介します。

この関数は、引数として渡された数値に含まれるすべての桁について、その位の値(一の位、十の位、百の位…)を計算し、配列として返すことが期待されます。

この問題は、再帰的なアプローチを使うことでシンプルに解決できます。

実装コード

それでは、この関数のコードを見てみましょう。

const num = 123;
const placeValue = (num, res = [], factor = 1) => {
    if(num){
        const val = (num % 10) * factor;
        res.unshift(val);
        return placeValue(Math.floor(num / 10), res, factor * 10);
    };
    return res;
};
console.log(placeValue(num));

コードの解説

この関数の処理の流れは以下の通りです。

  • num % 10 で最下位の桁(一の位)の数字を取り出します。
  • 取り出した数字に factor(1、10、100…と増加)を掛けることで、その桁の位の値を計算します。
  • res.unshift(val) で計算した値を結果配列の先頭に挿入します。
  • Math.floor(num / 10) で最下位の桁を取り除き、factor * 10 を新しい係数として再帰呼び出しを行います。
  • num が 0 になった時点で再帰を終了し、結果の配列を返します。

出力結果

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

[ 100, 20, 3 ]

まとめ

再帰を使うことで、数値を位の値ごとに分解する処理を簡潔に実装できます。ループ処理を使う場合と比べてコードが短くなり、処理の意図も明確になるのがメリットです。桁の分解が必要な場面では、ぜひこの手法を活用してみてください。

  1. JavaScriptで1からnまでの自然数の総和を求める関数を実装する方法

    問題数値 n を引数として受け取る JavaScript の関数を作成する必要があります。この関数は、1 から n までのすべての自然数(1 と n そのものを含む)の合計を返すものとします。解決アプローチ最もシンプルな方法は、for ループを使って 1 から n までの数値を順番に加算していくことです。変数で合計値を保持し、ループが終わった時点でその値を返します。コード例以下が実際のコードです。const num = 34; const summation = (num = 1) => {    let res = 0;    for(let i

  2. JavaScriptで数値に序数接尾辞(st・nd・rd・th)を追加する方法

    問題JavaScriptで関数を作成する必要があります。この関数は、数値 num を最初の(唯一の)引数として受け取ります。関数の役割は、英語の序数表記のルールに従って、数値に「st」「nd」「rd」「th」という接尾辞を追加することです。具体的なルールは以下の通りです。一の位が1で終わる数値には「st」を使用します(例:1st、発音はfirst)一の位が2で終わる数値には「nd」を使用します(例:92nd、発音はninety-second)一の位が3で終わる数値には「rd」を使用します(例:33rd、発音はthirty-third)上記ルールの例外として、下二桁が11・12・13となる数値に