用 reduce 累加数组数字需传入累加器函数并指定初始值 0,避免空数组报错;处理混合类型时用 Number() 转换并用 isNaN() 过滤无效值;累加对象数组字段时取对应属性值即可。

用 reduce 累加数组里的数字,核心是传入一个“累加器函数”,并指定初始值(通常为 0)。
基本写法:从 0 开始累加
最常见也最安全的方式是显式传入初始值 0:
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((acc, current) => acc + current, 0); console.log(sum); // 15
这里:
– acc 是累加器(上一轮返回的值,首次为 0)
– current 是当前遍历的元素
– 第二个参数 0 是初始值,**强烈建议加上**,避免空数组报错或类型意外
不带初始值的风险
如果省略第二个参数:
[1, 2, 3].reduce((a, b) => a + b); // 6 ✅<br> [].reduce((a, b) => a + b); // TypeError ❌<br> [1].reduce((a, b) => a + b); // 返回 1(不执行回调)✅ 但逻辑不清晰
空数组会直接抛错;单元素数组不调用回调函数——行为不易预测,不推荐用于累加。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
处理非数字或混合类型
若数组含字符串、null、undefined 等,需先转为数字再累加:
const mixed = [1, '2', null, 3, undefined, '4.5'];
const safeSum = mixed.reduce((acc, item) => {
const num = Number(item);
return isNaN(num) ? acc : acc + num;
}, 0);
console.log(safeSum); // 10.5
关键点:
– 用 Number() 转换,比 parseInt 或 + 更稳妥(能正确处理 '4.5')
– 用 isNaN() 过滤无效值,跳过累加
扩展:累加对象数组中的某个字段
比如计算商品总价:
const items = [
{ name: '苹果', price: 5.5 },
{ name: '香蕉', price: 3.2 },
{ name: '橙子', price: 4 }
];
const total = items.reduce((sum, item) => sum + item.price, 0);
console.log(total); // 12.7
本质不变:仍是数值累加,只是每次取 item.price 作为当前值。

















