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

JavaScriptのreduce()メソッドで配列要素の積を求める方法

問題

JavaScriptで、配列 arr を引数として受け取る関数を作成します。この関数は、配列内のすべての要素を掛け合わせた積を計算し、その結果を返す必要があります。

解決策:reduce()メソッドを使う

配列の全要素を集約して単一の値を得たい場合、Array.prototype.reduce() メソッドが最適です。reduce() は配列の各要素に対してコールバック関数を順に実行し、結果をアキュムレータ(累積値)に蓄えていきます。

積を求める場合は、初期値として「1」を指定するのがポイントです。1は乗法における単位元のため、計算結果に影響を与えず、さらに空の配列が渡された場合でも正しく 1 が返されるという利点があります。

コード例

以下がその実装例です。

const arr = [3, 1, 4, 1, 2, -2, -1];
const produceElements = (arr = []) => {
    const res = arr.reduce((acc, val) => {
        acc = acc * val;
        return acc;
    }, 1);
    return res;
};
console.log(produceElements(arr));

処理の流れ

このコードでは、アキュムレータ(acc)の初期値を 1 とし、配列の各要素(val)を順番に掛けていきます。具体的な計算過程は次の通りです。

1 × 3 = 3 → 3 × 1 = 3 → 3 × 4 = 12 → 12 × 1 = 12 → 12 × 2 = 24 → 24 × (-2) = -48 → -48 × (-1) = 48

出力結果

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

48
  1. JavaScriptで配列の要素を同じ配列内に複製する方法

    JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont

  2. JavaScriptで配列内の3番目に大きい数値を取得する方法

    JavaScriptでは、数値の配列を第1引数(唯一の引数)として受け取る関数を作成することが求められます。この関数の役割は、配列の中から3番目に大きい数値を選び出して返すことです。もし配列内に3番目に大きい数値が存在しない場合(ユニークな数値が3つ未満の場合)は、代わりに配列の最大値を返します。具体例たとえば、入力配列が以下のようになっているとします。const arr = [34, 67, 31, 87, 12, 30, 22];この場合、数値を降順に並べると「87 → 67 → 34」となるため、期待される出力は次のとおりです。const output = 34;実装コードこの処理を実現