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

JavaScriptで配列の逆インデックス×要素の合計を求める方法

逆インデックスとの積の合計とは

JavaScriptでは、配列の各要素に逆インデックス(後ろから数えた位置)を掛け、その合計を求めたい場面があります。

まず、次のような数値の配列を用意します。

const arr = [3, 6, 7, 3, 1, 4, 4, 3, 6, 7];

この配列には10個の要素が含まれているため、最後の要素のインデックスは9になります。

今回求めたいのは、「各要素 × 逆順のインデックス」の総和です。具体的には、次のような計算になります。

(9 * 3) + (8 * 6) + (7 * 7) + (6 * 3) + ... 配列の末尾まで続く

先頭の要素「3」は逆インデックス9と掛けられ、次の「6」は8、さらに次の「7」は7というように、後ろから数えた位置を乗じていきます。

reduce()を使った実装

reduce()メソッドを使えば、この処理を簡潔に実装できます。「配列の長さ - 現在のインデックス - 1」という式で逆インデックスを算出し、各要素との積を累積していくのがポイントです。

const arr = [3, 6, 7, 3, 1, 4, 4, 3, 6, 7];
const reverseMultiSum = arr => {
    return arr.reduce((acc, val, ind) => {
        const sum = val * (arr.length - ind - 1);
        return acc + sum;
    }, 0);
};
console.log(reverseMultiSum(arr));

コードのポイント

  • reduce()の初期値を0に設定し、合計を安全に累積できるようにしています。
  • arr.length - ind - 1により、先頭要素が最大の逆インデックスを持つよう計算されます。
  • アロー関数で記述することで、コード全体がコンパクトになっています。

出力結果

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

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

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

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

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