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

JavaScriptで数値の各桁を切り取って配列を作成する方法

問題

今回は、数値を受け取り、その数値を先頭から各桁の位置で切り取った文字列を要素として持つ配列を返すJavaScript関数を作成します。

例えば、入力が 246 の場合、出力は ['2', '24', '246'] のようになります。つまり、最初の1桁目だけ、次に2桁目まで、最後に数値全体というように、桁を増やしながら文字列を配列に格納していくイメージです。

実装コード例

以下は実際のコードです。

const num = 246;

const cutOffEach = (num = 1) => {
    const str = String(num);
    const res = [];
    let temp = '';
    for(let i = 0; i < str.length; i++){
        const el = str[i];
        temp += el;
        res.push(temp);
    };
    return res;
};

console.log(cutOffEach(num));

出力結果

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

[ '2', '24', '246' ]

コードの解説

このコードの処理の流れは以下の通りです。

まず String(num) を使って数値を文字列に変換し、各桁にインデックスでアクセスできるようにします。続いて for ループで文字列を先頭から1文字ずつ取り出し、一時変数 temp に連結していきます。ループの各回で、その時点の temp を結果配列 res に追加することで、「1桁目」「2桁目まで」「3桁目まで」という文字列が順に蓄積されていきます。最後に res を返せば完成です。

より簡潔な代替案

splitmapslice を組み合わせると、同じ処理をより短く書くこともできます。

const cutOffEach = (num = 1) => {
    const str = String(num);
    return str.split('').map((_, i) => str.slice(0, i + 1));
};

console.log(cutOffEach(246)); // [ '2', '24', '246' ]

こちらの方法では、文字列を1文字ずつの配列に分解した後、map を使ってインデックス i ごとに「先頭から i + 1 文字分」を slice で切り出しています。状態を保持する一時変数が不要になるため、意図が明確で読みやすいコードになります。

  1. JavaScriptで配列の各要素に二次関数f(x)を適用してソートする方法

    問題次のような二次関数が与えられています。f(x) = ax² + bx + cここで、a、b、c は3つの定数です。この課題では、ソート済みの整数配列 arr を第1引数に、a、b、c をそれぞれ第2、第3、第4引数として受け取るJavaScript関数を作成します。この関数は、配列 arr の各要素に関数 f(x) を適用し、その結果を昇順にソートした配列を返す必要があります。例えば、関数への入力が次のようであった場合を考えます。const arr = [-8, -3, -1, 5, 7, 9]; const a = 1; const b = 4; const c = 7;この場合、期待さ

  2. JavaScriptで数値を反転して桁ごとの配列に分割する方法

    問題概要数値を1つ受け取るJavaScriptの関数を作成する必要があります。この関数は、まず受け取った数値を反転させ、その反転した数値を1桁ずつに分割して、その配列を返すものとします。入力const num = 1234567;出力const output = [7, 6, 5, 4, 3, 2, 1];これは、反転後の数値が7654321になるためです。実装例以下がそのコードです。const num = 1234567; const reverseAndSplit = (num = 1) => {    const numStr = String(num); &n