数组处理方法(处理数组中的数据适合使用哪种结构编程)
导语:数组处理可以这么搞,使用过吗?
在ES5中新增了很多有关写数组的方法。有forEach、map、filter等。其中有两个很少用到,就是reduce和reduceRight。今天我来总结一下它们的使用。及下一下篇总结一下为什么这两法值得去使用。而且在今后讲其它内容的时候我们也会使用到这两个方法。
上面是引言下面才是正题:
一、reduce()方法:array.reduce(callbackfn,[initialValue])
reduce()方法接收一个函数callbackfn作为累加器,数组中的每个值(从左到右)开始合并,最终返回一个值。
callbackfn包括四个参数:
function callbackfn(preValue,curValue,index,array){}
preValue:上一次调用回调返回的值,或者是提供的初始值(initialValue),如果没有初始值那就是数组中的第一个值。
curValue:数组中当前被处理的数据项(如果preValue为数组中第一个值,那么curValue就是第二个值)。
index:当前数组项在数组中的索引值。
array:调用reduce()方法的数组。
举个例子:
上面是代码,下面看一下运行后结果:
然后,假定给他传一个初始值5:像下面这样
arr.reduce(function(){},5)
运行结果是这样的:
由此可以看出,当初始值改成5之后,preValue的第一个取值就变成了5。
二、reduceRight()方法:这个方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。
同样用上面那个例子,将reduce改成reduceRight,是这样的:
运行结果是这样的:
可以看到,当前值是最后一个4。然而,我们下面同样给它传一个初始值。
arr.reduce(function(){},5)
运行结果是这样的:
初始值就变成了6。
最后总结:有关于reduce和reduceRight通过这一篇我们知道了它们的使用,然后了,就只剩下一个问题,相比其它处理数组的方法,这两方法为什么值得我们去使用了。下一篇将从执行效率上来看。
短内容,说完整事,哪怕只读一篇也能学知识。点击关注小郑搞码事,说的都是那堆代码。谢谢您的鼓励!
本文内容由小琪整理编辑!