说在前面的一些话,本人是一个处在不断学习中的前端菜鸟,行文免不了会出现一些描述不当的地方,以下仅是个人的一些理解,如有描述错误的地方,欢迎各大伙伴们前来纠正。下面就让我们一起来进入正文吧! 在我们开始研究reduce原理之前,我想先做个总结。简单来说,reduce就是通过遍历数组,并对数组中的每一个元素,通过回调函数进行处理,并将这些处理结果进行累加返回。下面就让我们一起来看看reduce的原理是怎么实现的吧。 首先我们自己来模拟实现一个reduce函数。
/*
* params@{arr} 被处理的数组
* params@{callback} 数组中元素的处理函数
* params@(initVal} 初始值
*/
function reduce(arr,callback,initVal) {
let total = initVal || 0;
for(let index in arr) {
total = callback(total,arr[index],index,arr);
}
return total;
}
由此可以看出,reduce其实就是将数组中的元素,依次通过特定的处理,并将处理结果进行累加返回的一种数据处理方式。