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

JavaScriptで2つの配列を逆順に対応させながら合計する方法

本記事では、2つの数値配列(例えば firstsecond)を受け取り、新しい配列を返す関数 reverseSum() を実装する方法を解説します。返される配列には、以下のような要素が含まれます。

  • 1つ目の配列の先頭要素と、2つ目の配列の末尾要素の合計が、新しい配列の最初の要素になる

  • 1つ目の配列の2番目の要素と、2つ目の配列の後ろから2番目の要素の合計が、次の要素になる(以降も同様)

どちらか一方の配列の要素が先に尽きた場合は、残りの要素をそのまま新しい配列の末尾へ追加します。それでは、この関数のコードを見ていきましょう。

コード例

const first = [23, 5, 7, 2, 34, 7, 8];
const second = [2, 4, 21, 4, 6, 7, 56, 23, 32, 12];

const reverseSum = (first, second) => {
    const sumArray = [];
    let i, j, k;
    for(i = 0, j = second.length - 1, k = 0; i < first.length && j >= 0;
    i++, j--, k++){
        sumArray[k] = first[i] + second[j];
    };
    while(i < first.length){
        sumArray[k] = first[i];
        k++;
        i++;
    };
    while(j >= 0){
        sumArray[k] = second[j];
        k++;
        j--;
    };
    return sumArray;
};
console.log(reverseSum(first, second));

出力結果

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

[
    35, 37, 30, 58, 41,
    13, 12, 21, 4, 2
]

動作の仕組み

この出力結果がどのように計算されているのか確認してみましょう。例えば最初の要素である 35 は、「1つ目の配列の先頭要素」と「2つ目の配列の末尾要素」を足した値です。

 23(1つ目の配列の先頭要素)
+12(2つ目の配列の末尾要素)
------
 35

同様に、37 は1つ目の配列の2番目の要素「5」と、2つ目の配列の後ろから2番目の要素「32」の合計です。このように、片方の配列は先頭から、もう片方の配列は末尾から順に走査し、対応する要素同士を加算していきます。

サンプルでは second 配列の方が要素数が多いため、first 配列をすべて使い切った時点でメインループが終了します。その後、second 配列に残っていた要素(21、4、2)が while ループによってそのまま新しい配列へ追加され、最終的な結果となっています。

  1. JavaScriptの配列reverse()メソッドとは?使い方とサンプルコードを解説

    JavaScriptのreverse()メソッドは、配列の要素を逆順に並べ替えるために使用されるメソッドです。呼び出すと元の配列そのものが反転され、その結果の配列が戻り値として返されます。構文array.reverse()reverse()メソッドのポイント引数は不要で、呼び出した配列自体を直接書き換えます(破壊的なメソッド)。戻り値は、要素が反転された配列への参照です。元の配列を変更せずに反転したい場合は、ES2023で追加されたtoReversed()メソッドを使うと便利です。それでは、実際にJavaScriptでreverse()メソッドを実装してみましょう。例1:基本的な使い方<

  2. 【初心者向け】JavaScriptのreverse()メソッドで配列を逆順にする方法

    JavaScriptのreverse()メソッドは、配列の要素を元の順序と逆順に入れ替えるための便利な関数です。このメソッドを呼び出すと、配列の最初の要素が最後に、最後の要素が最初に移動し、配列全体が反転されます。reverse()メソッドの基本reverse()は配列そのものを変更する「破壊的メソッド」である点に注意してください。つまり、元の配列の順序が直接書き換えられます。元の配列を保持したい場合は、あらかじめslice()やスプレッド構文([...arr])などでコピーを作成してからreverse()を使用するのがおすすめです。サンプルコード以下は、ボタンをクリックすると配列の要素が逆順