reduce函数常用于对数组,reduce函数接受3个参数
- 被迭代的数组
- 用于迭代计算的函数
- 迭代的初始值
注意点:如果没有提供初始值时,会默认使用数组的第一个元素来作为初始值
function reduce(arr, callback, initialVal) {
if (
!Array.isArray(arr) ||
typeof callback !== "function" ||
arr.length === 0
) {
return [];
}
// 如果没有将initialVal传递给该函数,默认使用数组第一项作为initialVal
const hasInitialVal = initialVal !== undefined;
let value = hasInitialVal ? initialVal : arr[0];
// 如果有传递initialVal,则索引从1开始,否则从0开始
for (let i = hasInitialVal ? 0 : 1; i < arr.length; i++) {
value = callback(value, arr[i], i, arr);
}
return value;
}