版权声明:本文为博主原创文章,评论区告知一声,大家随意转载! 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方法的数组是不是空数组时,还是加一个初始值比较靠谱。