您的位置:首页 > 其它

高程5.2.9归并方法

2015-11-20 13:39 225 查看
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(),主要取决从哪头开始遍历数组,其他都是完全一样的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: