Array.reduce() 累加归并

最后更新:2026-09-09

Array.reduce() 累加归并

reduce 把数组归并成单个值:回调对每个元素累积计算,最终返回累积结果。求和、计数、分组、扁平化都靠它,是函数式数组处理的核心。

分类数组
ES 版本ES5(2009)

📝 语法

const 结果 = 数组.reduce((累积值, 当前元素, 下标, 原数组) => 新累积值, 初始值);

⚙️ 参数

callback累积函数:返回值作为下一轮的累积值。
initialValue可选。累积的初始值;省略时用第一个元素充当,且从下标 1 开始遍历;空数组省略初始值会抛 TypeError。

返回值:累积计算的最终结果。

是否修改原值:否(返回新值)

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

10
2
{ '苹果': 2, '香蕉': 1 }
⚠️ 警告 空数组调用 reduce 且不给初始值会抛 TypeError: Reduce of empty array with no initial value——永远传初始值。
💡 提示 reduce 能实现 map/filter 的功能,但可读性差——简单转换用 map/filter,真正的多进一出归并才用 reduce。

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
Array.reduce() v1 v12 v1.5 v3 v10.5
所有现代浏览器均支持
更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qreduce 的初始值什么时候必须给?
A数组可能为空时必须给,否则抛 TypeError。对象数组做统计时也建议给(通常 {} 或 0),类型更明确。
Qreduce 能替代 map 和 filter 吗?
A技术上能,但可读性差。简单转换用 map、筛选用 filter,reduce 留给需要把数组折叠成不同结构(单值/对象/新形状)的场景。
Qreduce 的回调返回值很重要吗?
A极其重要:返回值就是下一轮的累积值。箭头函数忘写 return(带花括号时)会让累积值变成 undefined。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏