TIL 005 | JavaScript Array.prototype.reduce()



Array.prototype.reduce()

  • reduce()メソッドは、配列内の各要素に対して所与のreducer(reduce)関数を実行し、結果値を返します(配列内の値を1つに減らします)
  • mapfilterfind関数によって実現可能なすべての機能はreduceによって実現することができる.
  • 1.構文

    arr.reduce(callback[, initialValue])

    パラメータ

  • callback:アレイ内の各要素に対して実行する関数.次は指数を受け入れます.
  • acumulator:コールバックの戻り値を累計します.コールバックの最後の戻り値が、initialValueの場合、initialValueの値
  • currentValue:処理する現在の要素
  • currentIndex(Optional):処理する現在の要素のインデックス;initialValueは0、そうでない場合は1
  • array(Optional):reduce()呼び出しの配列
  • initialValue(Optional):コールバックの最初の呼び出しは、最初のパラメータに提供される値である.初期値が指定されていない場合は、配列の最初の要素が使用されます.reduce()が空の配列で初期値なしに呼び出されると、エラーが発生します.
  • return


    計算結果値の累計

    2.起動方式


    1.initialValueがある場合

    let sampleArray = [1,2,3,4,5]
    
    var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
    	return accmulator + currentValue},0)
    
    console.log(result) // 15
    コールバックは5回呼び出され、各パラメータには次の値があります.
    callbackaccumlatorcurrentValuecurrentIndexarrayreturn1010[1,2,3,4,5]12121[1,2,3,4,5]33332[1,2,3,4,5]64643[1,2,3,4,5]1051054[1,2,3,4,5]15

    2.InitialValueなし

    let sampleArray = [1,2,3,4,5]
    
    var result = sampleArray.reduce((accumulator, currentValue, currentIndex, array){
    	return accmulator + currentValue})
    
    console.log(result) // 15
    コールバックは4回呼び出され、各パラメータには次の値があります.
    callbackaccumlatorcurrentValuecurrentIndexarrayreturn1121[1,2,3,4,5]32332[1,2,3,4,5]63643[1,2,3,4,5]1041054[1,2,3,4,5]15initialValueが指定されていない場合、reduce()はインデックス1からコールバック関数を実行し、0番目のインデックスをスキップします.
  • reduce()関数呼び出し時initialValue値なし:
  • accumlatorアレイの最初の値
  • currentValueは配列の2番目の値
  • である