js实现sum方法
实现基础的数组求和
定义一个简单的sum函数,对数组元素进行求和。假设数组中的元素均为数字类型:
function sum(arr) {
return arr.reduce((acc, current) => acc + current, 0);
}
处理非数字类型元素
扩展功能以处理包含非数字元素的数组,通过Number()进行类型转换:
function sum(arr) {
return arr.reduce((acc, current) => acc + Number(current) || 0, 0);
}
支持多维数组求和
递归处理多维数组的情况,对嵌套数组进行展开求和:
function sum(arr) {
return arr.reduce((acc, current) => {
const value = Array.isArray(current) ? sum(current) : Number(current);
return acc + (value || 0);
}, 0);
}
添加参数校验
增加输入参数的类型检查,确保传入的是数组:
function sum(arr) {
if (!Array.isArray(arr)) {
throw new TypeError('Expected an array as input');
}
return arr.reduce((acc, current) => {
const value = Array.isArray(current) ? sum(current) : Number(current);
return acc + (value || 0);
}, 0);
}
性能优化版本
针对大型数组进行优化,避免递归导致的堆栈溢出问题:

function sum(arr) {
let total = 0;
const stack = [...arr];
while (stack.length) {
const current = stack.pop();
if (Array.isArray(current)) {
stack.push(...current);
} else {
total += Number(current) || 0;
}
}
return total;
}






