箭头函数在 reduce 中写内联累加器需显式传入 initialvalue 并保持 (acc, curr) 参数顺序:单表达式可隐式返回,如 (acc, curr) => acc + curr;多步逻辑须用 {} 加 return;缺初始值或漏 return 会导致 nan。

箭头函数在 reduce 中写内联累加器,核心是把累加逻辑直接写在回调参数位置,不声明额外函数名,同时注意 initialValue 的显式传入和参数顺序。
基础写法:单表达式累加
最简场景——对数字数组求和,用一行箭头函数作为累加器:
```jsconst sum = [1, 2, 3, 4].reduce((acc, curr) => acc + curr, 0);
```
这里:
• (acc, curr) => acc + curr 是内联箭头函数,自动返回计算结果
• 0 是初始值,必须提供,否则第一次调用时 acc 会是数组第一个元素,curr 是第二个,易出错
处理对象数组:累加特定字段
比如统计订单总金额:
const orders = [
{ id: 1, amount: 120 },
{ id: 2, amount: 85 },
{ id: 3, amount: 210 }
];
const total = orders.reduce((sum, order) => sum + order.amount, 0);
```
关键点:
• 箭头函数体仍是单表达式,隐式返回
• 字段访问(order.amount)直接写在表达式里,无需大括号和 return
需要多步逻辑?用括号包裹并显式 return
如果累加逻辑不止一步(如过滤、转换、条件累加),就不能依赖隐式返回,需用花括号 + return:
// 只累加大于 100 的金额
const filteredSum = orders.reduce((sum, order) => {
if (order.amount > 100) return sum + order.amount;
return sum;
}, 0);
```
注意:
• 箭头函数加了 {} 就不会自动返回,必须写 return
• 初始值 0 仍不可省略,否则类型可能变成 undefined 导致 NaN
避免常见陷阱
• 不写初始值 → 第一次 acc 是数组首项,curr 是第二项,空数组会报错
• 箭头函数体用花括号却不写 return → 返回 undefined,后续累加变成 NaN
• 混淆 acc 和 curr 顺序 → reduce 固定是 (accumulator, currentValue),不可颠倒
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











