数组reduce()和 reduceRight()方法

  很多时候需要累加数组项的得到一个值(比如说求和)。如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用forwhile循环,对数组进行迭代,依次将他们的值加起来 比如

        或者  

  接下来看看双方所使用的时间

  while:                         for:  

  

  时间对比


   

  接下来使用更好的方法  ES5提供了 两个数组的方法reduce() 和 reduceRight() 这两个数组会迭代数组的所有数组项。然后返回一个最终值。

reduce() 方法  接收一个函数callback 作为累加器 数组中的每个值开始合并 最终为一个值

  array.reduce(callback,[initialValue])

  callback函数接收四个参数:

  preValue :上一次调用回调返回的值 或者是提供的初始值。

  curValue : 数组中当前被处理的数组项

  index :当前数组项在数组中的索引值

  array 调用reduce() 方法的数组

  reduce()方法为数组中的每一个元素依次执行回调函数callbackfn,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组。

  回调函数第一次执行时,preValue 和 curValue 可以是一个值,如果 initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue ,并且curValue 等于数组中的第一个值;如果initialValue 未被提供,那么preValue 等于数组中的第一个值,`curValue等于数组中的第二个值。

  

  回调函数被执行四次,每次参数和返回的值如下:

  

  所以可以直接封装成一个求和的函数

  

  我们再来检测一下需要耗费多少时间

  

  在Chrome浏览器下,每次执行的数据都会略有不同,但可以明显的看出reduce()对数组项求和所费时间是最短的。

2. reduceRight() 方法

    reduceRight()方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加

    

posted on 2016-07-04 16:24  Befacebook  阅读(439)  评论(0编辑  收藏  举报