配列reduce()とreduceRight()方法
3907 ワード
reduce()方法
構文
第1回目の実施時に
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()
パラメータが与えられた場合、initialValue
はaccumulator
に等しく、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;
});
}