语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
IE9及以上支持。
【原生实现】
Array.prototype.myReduce = function(fn,init){
var l = this.length;
var p = init;
var i = 0;
if(!init){
i = 1;
p = this[0];
}
for (i; i<l;i++){
p = fn(p,this[i],i,this);
}
return p;
}
var mySum = [1,2,3,4,5].myReduce(function(p,e,i,arr){
return p + e;
});
// mySum = 15
【reduce统计数组】
var obj = ['a','b','c','d','a','d'].reduce(function(p,e){
if(e in p){
p[e] ++;
}else{
p[e] = 1;
}
return p;
},{});
// obj = {a: 2, b: 1, c: 1, d: 2}
【reduce去重】
var result = ['a','b','c','d','a','d'].reduce(function(p,e){
if(p.indexOf(e)==-1){
p.push(e);
}
return p;
},[]);
//result = ["a", "b", "c", "d"]