高程5.2.9归并方法

ECMAScript 5新增了两个归并数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.

其中reduce()从数组的第一项开始,逐个遍历到最后,而reduceRight(),顾名思义就是从右边也就是从最后一项开始,向前遍历到第一项.

这两个方法都接收两个参数,一个是每一项上调用的函数 和 (可选的)作为归并基础的初始值.

传给这两个方法的函数,接收4个参数:前一个值,当前值,项的索引 和 数组对象.

这个函数返回的值都将作为 第一个参数(前一个值) 自动传给下一项.

//第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项
    var arr=[1,2,3,4,5];

    var sum=arr.reduce(function(prev,cur,index,array){
        return prev+cur;
    });
    console.log(sum);//15

第一次执行回调函数,prev是1,cur是2.第二次时,prev是3(1+2),cur是3(数组的第三项).这样一直下去,直到把数组中每一项都访问一遍,最后返回结果

//有初始值时
var arr1=[3];
    var sum1=arr1.reduce(function(prev,cur,index,array){
        return prev+cur;
    },7)
    console.log(sum1);//10

reduceRight()和reduce()的作用类似,只不过方向是相反的,从后往前

var arr=[1,2,3,4,5];

    var sum2=arr.reduceRight(function(prev,cur,index,array){
        return prev+cur;
    })
    console.log(sum2);//15

这个例子里,第一执行回调函数,prev是5,cur是4,最后结果是相同的.

使用reduce()和reduceRight(),主要取决从哪头开始遍历数组,其他都是完全一样的.

原文地址:https://www.cnblogs.com/sunshinegirl-7/p/4980483.html