reduce()方法是ES5中新增的逐项处理数组的方法,对数组中的每一个元素执行特定的方法,并将其结果聚合成一个单一的返回值.Array.prototye.reduceES5.1规范语法arr.reduce(callback(accumulator,currentValue[,index[,array]])[,initialValue])参数回调:执行数组中每个值的函数,它包含四个处同时参数;accumulator(累加器):累加回调的返回值,为上次调用回调时返回的累加值,即initialValue。currentValue:正在处理的数组中当前元素的值。index:可选,正在处理的数组中当前元素的索引。array:可选,调用reduce()的数组。initialValue:可选,作为第一次调用回调函数时第一个参数的值。如果没有提供初始值,将使用数组的第一个元素。在没有初始值的空数组上调用reduce是错误的。返回值:函数累加处理的结果。reduce()依次为数组中的每个元素执行回调函数(数组中已删除或未分配的元素除外)。第一次执行回调函数时,accumulator和currentValue的取值有两种情况:如果reduce()提供initialValue时,accumulator取initialValue,currentValue取数组中的第一个值;如果在调用reduce()时没有提供initialValue,则累加器取数组中的第一个值,currentValue取数组中的第一个值两个值。reduce()的工作原理假设您运行以下代码:[0,1,2,3,4].reduce(function(accumulator,currentValue,currentIndex,array){returnaccumulator+currentValue;});callback被调用了四次,每次调用的参数和返回值如下:使用箭头函数:[0,1,2,3,4].reduce((prev,curr)=>prev+curr);提供reduce()的第二个参数10为初始值:[0,1,2,3,4].reduce((accumulator,currentValue,currentIndex,array)=>{returnaccumulator+currentValue},10)
