引用类型: 归并方法

reduce()和 reduceRight():
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
reduce()方法从数组的第一项开始,逐个遍历到最后。
reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。
个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
 
var arr=[1,2,3,4];
       var sum=arr.reduce(function(value,item){
            return value+item;
        },100);//100为初始值
        console.log(sum);//110
 
 
reduction()重构:

function reduce(arr,fn,initValue){
var start=0;
if(initValue===undefined){
initValue=arr[0];
start++;
}
for(var i=start;i<arr.length;i++){
initValue=fn(initValue,arr[i],i,arr)
}
return initValue;
}

posted @ 2020-01-02 08:27  阿狸i  阅读(149)  评论(0编辑  收藏  举报