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

【JavaScript】配列の隣接要素を2つずつ掛けて合計する方法

本記事では、数値の配列を受け取り、隣接する要素を2つずつ掛け合わせた結果をすべて合計した値(交互乗算和)を返すJavaScript関数の作成方法を解説します。

問題の概要

例えば、次のような配列が与えられたとします。

const arr = [1, 2, 4, 1, 2, 3, 4, 3];

この場合、出力は以下のように計算されます。

1*2 + 4*1 + 2*3 + 4*3
= 2 + 4 + 6 + 12

したがって、期待される最終的な出力は次のとおりです。

24

サンプルコード

それでは、この処理を実装したコードを見てみましょう。

const arr = [1, 2, 4, 1, 2, 3, 4, 3];
const alternateOperation = arr => {
   const productArr = arr.reduce((acc, val, ind) => {
      if(ind % 2 === 1){
         return acc;
      };
      acc.push(val * (arr[ind + 1] || 1));
      return acc;
   }, []);
   return productArr.reduce((acc, val) => acc + val);
};
console.log(alternateOperation(arr));

コードの解説

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

  • 偶数インデックスのみ処理: reduceメソッドで配列を走査し、インデックスが奇数の場合は累積配列をそのまま返してスキップします。
  • 隣接要素との乗算: 偶数インデックスの要素は、その直後の要素と掛け合わせます。(arr[ind + 1] || 1)としているため、次の要素が存在しない場合(配列の長さが奇数の場合)は自身の値がそのまま使われます。
  • 合計の算出: 作成された積の配列を、再度reduceメソッドで畳み込んで合計値として返します。

実行結果

コンソールには次の出力が表示されます。

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

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

  2. JavaScriptにおける配列の分割代入(Destructuring)の基本と使い方

    分割代入(Destructuring)とは、配列から値を取り出して個別の変数に展開するための構文です。ES2015(ES6)で導入されたこの機能を使うと、配列の各要素を簡潔かつ読みやすく変数に割り当てることができます。 配列の分割代入のサンプルコード 以下は、JavaScriptで配列の分割代入を行うコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport&quo