1、reduce()方法概述
  reduce方法有两个参数,第一个参数是一个callback,用于针对数组项的操作;第二个参数则是传入的初始值,
这个初始值用于单个数组项的操作。需要注意的是,reduce方法返回值并不是数组,而是形如初始值的经过叠加处理后的操作。

 1 /*
 2    数组元素求和 
 3 */
 4 var arr = [1, 2, 3, 4, 5];
 5 
 6 var reducer = function add(sum, num) { return sum + num; };
 7 
 8 var total = arr.reduce(reducer, 0);
 9 
10 console.log(total);

2、reduce()方法实现原理

 1 Array.prototype.reduce = function(callback,initialValue){
 2     var previous = initialValue,k = 0,length = this.length;
 3     if(typeof initialValue === "undefined"){
 4         previous = this[0];
 5         k = 1;
 6     }
 7     if(typeof callback === "function"){
 8         for(k; k < length; k++){
 9            previous = callback(previous, this[k], k, this);
10         }
11     }
12     return previous;
13 }