reduce是一个非常有用的函数,它可以将一个集合中的元素通过指定的操作进行累积。其原理非常简单,以JavaScript为例,手写一个reduce函数如下:
function reduce(arr, reducer, initialValue) {
let accumulator = initialValue;
let start = 0;
if(initialValue == null) {// 没传初始值的处理
accumulator = arr[0];
start = 1;
}
for (let i = start; i < arr.length; i++) {
accumulator = reducer(accumulator, arr[i], i, arr);
}
return accumulator;
}
这个reduce函数接受三个参数:arr(数组),reducer(函数)和initialValue(初始值)。在函数内部,首先声明一个变量accumulator用于保存累积结果,并将其赋值为初始值。
然后使用一个循环遍历数组中的每个元素,将当前的累积结果和当前元素传递给reducer函数进行处理,并将返回的结果更新到accumulator中。
最后,将最终的累积结果作为函数的返回值。
例如,我们可以使用reduce函数来计算数组中所有元素的总和:
const numbers = [1, 2, 3, 4, 5];
const sum = reduce(numbers, (accumulator, current) => accumulator + current, 0);
console.log(sum); // 输出: 15
在上面的例子中,初始值设置为0,累积操作即为相加(accumulator + current),最终得到了数组中所有元素的总和15。