初识reduce
reduce() 是数组的一个方法,它接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
语法:
array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
参数:
- accumulator:累加器,它是上一次调用回调返回的值,或者是提供的初始值(initialValue)。
- currentValue:当前元素。
- currentIndex(可选):当前元素的索引。
- array(可选):调用reduce()的数组。
- initialValue(可选):作为第一次调用回调时的累加器的初始值。如果未提供,则将使用数组中的第一个和第二个元素,否则将使用提供的初始值。
返回值: 返回一个新的值,即通过将所有数组元素组合在一起得到的单个值。
reduce的使用例子
计算一个数字数组的和:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 输出:15
在这个例子中,我们传递了一个箭头函数作为累加器,它将两个参数相加并返回结果。我们还传递了一个初始值0作为累加器的初始值。最后,reduce()方法返回了一个新的值,即数组中所有数字的和。
注意事项
- 如果数组为空,reduce()方法将返回初始值。
- 如果提供了初始值,它将作为第一次调用回调时的累加器的值。如果没有提供初始值,它将使用数组中的第一个和第二个元素。
- 如果提供了一个空数组作为reduce()方法的参数,它将抛出一个错误。因此,在使用reduce()方法之前,请确保数组不为空。
- 如果提供了第四个参数,它将被视为数组本身。因此,你可以直接传递一个包含多个数组的数组给reduce()方法。例如:
const numbers = [[1, 2], [3, 4], [5, 6]];
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue.reduce((subAccumulator, subCurrentValue) => {
return subAccumulator + subCurrentValue;
}, 0);
}, 0);
console.log(sum); // 输出:40