现在的位置: 首页 > web前端 > 正文

js中reduce()方法

2020年07月06日 web前端 ⁄ 共 1023字 ⁄ 字号 评论关闭

  reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路是最捷径的,亦或许reduce()逼格更高...


  reduce()语法


  arr.reduce(callback,[initialValue])


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


  callback(执行数组中每个值的函数,包含四个参数)


  1、previousValue(上一次调用回调返回的值,或者是提供的初始值(initialValue))


  2、currentValue(数组中当前被处理的元素)


  3、index(当前元素在数组中的索引)


  4、array(调用reduce的数组)


  initialValue(作为第一次调用callback的第一个参数。)


  实例解析reduce()initialValue参数


  先看第一个例子:


  vararr=[1,2,3,4];


  varsum=arr.reduce(function(prev,cur,index,arr){


  console.log(prev,cur,index);


  returnprev+cur;


  })


  console.log(arr,sum);


  打印结果:


  121


  332


  643


  [1,2,3,4]10


  这里可以看出,上面的例子index是从1开始的,第一次的prev的值是数组的第一个值。数组长度是4,但是reduce函数循环3次。


  再看第二个例子:


  vararr=[1,2,3,4];


  varsum=arr.reduce(function(prev,cur,index,arr){


  console.log(prev,cur,index);


  returnprev+cur;


  },0)//注意这里设置了初始值


  console.log(arr,sum);


  打印结果:


  010


  121


  332


  643


  [1,2,3,4]10


  总之,这个例子index是从0开始的,第一次的prev的值是我们设置的初始值0,数组长度是4,reduce函数循环4次。


  

抱歉!评论已关闭.