reduce方法详解

版权声明:本文为博主原创文章,评论区告知一声,大家随意转载! https://blog.csdn.net/MessageBox_/article/details/81324416

reduce方法详解

reduce(callback,init);
这个init为初始项,如果没有默认为数组的第一项,这个项是可选的

reduce方法会遍历数组,使用回调函数遍历处理数组中的每一项,回调函数每次会返回一个处理后的值,作为下一次回调的第一个参数。

function(prev,cur,index,arr);

prev:上一次回调的处理结果

cur:本次遍历的数组项

index:当前遍历的索引

arr:对应的是数组本身

实际应用:

1.进行数组项求和

    var arr = [1,2,3,4,5];      
    var res = arr.reduce((prev,val)=>(prev + val));
    console.log("arr:",arr);
    console.log("res:",res);
    //输出
    //arr: (5) [1, 2, 3, 4, 5]
    //res: 15

2.添加初始值求和

var arr = [1,2,3,4,5];      
var res = 
arr.reduce(
(prev,val,index)=>{ 
console.log(index); 
return (prev + val);
},100);
console.log("arr:",arr);
console.log("res:",res);
//输出
//0
//1
//2
//3
//4
//arr: (5) [1, 2, 3, 4, 5]
//res: 115

注意:空数组使用reduce方法时,必须传入initval值,否则会报错

[].reduce((prev,cur)=>prev+cur);
//输出:
//VM287:1 Uncaught TypeError: Reduce of empty array with no initial 
value  at Array.reduce (<anonymous>)

加一个初始值就好了

[].reduce((prev,cur)=>prev+cur,0);
//输出:0

所以如果你不确定调用reduce方法的数组是不是空数组时,还是加一个初始值比较靠谱。

猜你喜欢

转载自blog.csdn.net/MessageBox_/article/details/81324416