配列reduce()とreduceRight()方法

3907 ワード

reduce()方法reduce()方法は、1つの関数callbackをアキュムレータとして受信し、配列内の各値(左から右へ)はマージを開始し、最終的には1つの値となる.
構文
array.reduce(callback[, initialValue])
reduce()方法はcallback関数を受信し、この関数は4つのパラメータを含む.
function callback(accumulator, currentValue, currentIndex, array){}
  • accumulator:前回のコールバックの戻り値、または提供された初期値
  • currentValue:配列内で現在処理されている配列項目
  • currentIndex:現在の配列項目のインデックス値
  • array:reduce()方法の配列を呼び出して、initialValueは第1回の呼び出し関数callbackの最初のパラメータとして機能する.
  • reduce()方法は、配列内の各要素に対して順に回転関数callbackを実行し、配列内の削除または未割り当て要素を含まず、4つのパラメータを受け入れる:初期値(または前回のコールバック関数の戻り値)、現在の要素値、現在のインデックス、reduce()の配列を呼び出す.
    第1回目の実施時にaccumulatorおよびcurrentValueは、initialValueを呼び出したときに提供される値であってもよく、第1のreduce()accumulatorに等しく、initialValueは配列の最初の値に等しい.currentValueが提供されていない場合、initialValueは配列の第1の値に等しく、accumulatorは配列の第2の値に等しい.
    var arr = [0,1,2,3,4];
    
    arr.reduce(function (accumulator, currentValue, currentIndex, array) {
        return accumulator+ currentValue;
    }); // 10
    reduceRight()方法currentValue方法の機能は、reduceRight()の機能と同じであり、reduce()は、配列の最後から前の方に配列内の配列項目をアキュムレータすることとは異なる.reduceRight()が初めてコールバック関数reduceRight()を呼び出すと、callbackおよびaccumulatorは2つの値のうちの1つであってもよい.currentValueを呼び出したときにreduceRight()パラメータが与えられた場合、initialValueaccumulatorに等しく、initialValueは配列の最後の値に等しい.currentValueパラメータが提供されていない場合、initialValueは配列の最後の値に等しく、prevValueは配列の最後から二番目の値に等しい.
    var arr = [0,1,2,3,4];
    
    arr.reduceRight(function (accumulator, currentValue, currentIndex, array) {
        return accumulator + currentValue;
    }); // 10
    練習:JavaScriptに内蔵されているパーミッション()関数を使用しないで、mapとreduceを利用してstring 2 int()関数を実現します.
    'use strict';
    
    function string2int(s) {
        return s.split("").map(function(item) {
            return item * 1;
        }).reduce(function(x, y) {
            return x * 10 + y;
        });
    }