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

【JavaScript】配列をn番目ごとの要素の合計値にまとめる方法

本記事では、数値の配列を受け取り、インデックスがnの倍数である位置にある要素だけを抽出して合計値を返すJavaScript関数の実装方法を解説します。

実装の考え方

この関数は、以下の手順で実装できます。

  • 合計を保持する変数を0で初期化する
  • forループで配列を先頭から順に走査する
  • 現在のインデックスがnumで割り切れる場合のみ、その要素を合計に加算する
  • 該当しないインデックスはcontinue文でスキップする
  • ループ終了後、最終的な合計値を返す

コード例

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

const arr = [1, 4, 5, 3, 5, 6, 12, 5, 65, 3, 2, 65, 9];
const num = 2;
const nthSum = (arr, num) => {
    let sum = 0;
    for(let i = 0; i < arr.length; i++){
        if(i % num !== 0){
            continue;
        };
        sum += arr[i];
    };
    return sum;
};
console.log(nthSum(arr, num));

出力結果

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

99

処理の解説

上記のコードでは、インデックス0から始めて2番目ごとの要素、すなわちインデックスが0, 2, 4, 6, 8, 10, 12の位置にある要素を加算しています。具体的には以下の計算が行われています。

1 + 5 + 5 + 12 + 65 + 2 + 9 = 99

別のアプローチ: filterとreduceを活用する

より簡潔に関数型スタイルで書きたい場合は、filter()reduce()を組み合わせる方法も便利です。

const nthSumAlt = (arr, num) =>
    arr.filter((_, i) => i % num === 0)
       .reduce((acc, val) => acc + val, 0);
console.log(nthSumAlt(arr, num)); // 99

こちらの書き方では、まず条件に一致する要素だけを新しい配列として取り出し、その後reduce()で一括して合計しています。可読性が高く、意図も伝わりやすいのがメリットです。

  1. JavaScriptでソート済み2次元配列からN番目に小さい要素を求める方法

    問題の概要昇順にソートされた数値の2次元配列(行列)が与えられたとします。const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ];この配列を第1引数として受け取り、整数 num を第2引数として受け取るJavaScript関数を作成します。関数は、配列 arr 内に存在する num 番目に小さい要素を返す必要があります。例えば、関数への入力が以下の場合を考えてみましょう。const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ]; const

  2. JavaScriptで配列要素をそのインデックスでべき乗した値に変換する方法

    問題 数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、入力配列の各要素を、その要素の位置を示す0始まりのインデックスでべき乗し、新しい配列へと変換します。そして最終的に、この新しい配列を返します。 例えば、インデックス0にある要素は0乗(常に1)、インデックス3にある要素は3乗、というように各要素が処理されます。 実装のポイント ループで配列を走査しながら、各要素とそのインデックスを同時に取得する Math.pow() を使って「要素 ^ インデックス」を計算する 計算結果を結果配列の同じ位置に格納する なお、モダンなJavaScriptでは Math