JS reduce method



reduce


reduce()メソッドは、アレイ内の各要素に対して所与のreducer関数を実行し、結果値を返します.
reduce()は、配列を巡り、インデックスデータを減らし、任意の機能を実行できます.

構文

arr.reduce(callback[, initialValue])
  • callback-アレイ内の各要素に対して実行する関数.次の4つのパラメータを使用します.
  • accumulator-計算機計算機はコールバックの戻り値を累積します.コールバックの前の戻り値、またはコールバックの最初のコールがinitialValueを同時に提供している場合は、initialValueです.
  • currentValue-処理する現在の要素.
  • currentIndex-処理する現在の要素のインデックス.InitialValueが提供されている場合は、0または1から開始します.
  • array-reduce()の配列を呼び出します.
  • initialValue-callbackの最初の呼び出しで最初の引数に与えられた値.初期値が指定されていない場合は、配列の最初の要素が使用されます.空の配列で初期値なしにreduce()を呼び出すと、エラーが発生します.
  • 説明:


    reduce()配列に存在する各要素に対してコールバック関数を1回実行し、コールバック関数は以下の4つのパラメータを受け入れます.
  • accumulator
  • currentValue
  • currentIndex
  • array
  • コールバックが最初に呼び出されると、アキュムレータとcurrentValueには次の2つの値があります.reduce()関数呼び出しがinitialValueを提供する場合、アキュムレータはinitialValueに等しく、currentValueは配列の最初の値に等しい.InitialValueが指定されていない場合、アキュムレータは配列の最初の値に等しく、currentValueは2番目の値に等しい.
    注:initialValueが指定されていない場合、reduce()はインデックス1からコールバック関数を実行し、最初のインデックスをスキップします.InitialValueが指定されている場合は、インデックス0から開始します.

  • reduce()関数を記述する際に最も一般的な例を以下に示す.
    reduce()関数を使用して1から10を加算する例.
  • const numberList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
    const initValue = 0;
    
    const totalResult = numberList.reduce((initialValue, currentValue, currentIndex, array) => {
        return initialValue + currentValue;
    }, initValue);
    reduce()関数で使用されるパラメータを表示すると、2つのコールバック関数とinitValueが渡されます.
    ただし、2番目のパラメータ(パラメータ)であるinitValueは、使用しても使用しなくてもよいオプションです.ただし、値がない場合は、上記の説明の「コメント」と同じ役割を果たします.
  • の第2の例ではinitValueは設定されていません.
    例を実行すると、最初の呼び出しは、アキュムレータ値0、currentValue 1、currentIndex値1で呼び出されます.
    アキュムレータにinitValueがないため、0番のパラメータを使用します.
    CurrentValueは1から始まります.initialValue値が指定されていないためです.
  • [0, 1, 2, 3, 4].reduce(function(accumulator , currentValue, currentIndex, array) {
      return accumulator + currentValue;
    });
  • 今回はinitValue値を10に指定したので、最初の呼び出しでアキュムレータ:10、
    CurrentValue:0、currentIndex:0を呼び出します.
  • [0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
      return accumulator + currentValue;
    }, 10);