You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript的reduce()方法计算每门课程的练习总数量?

你的代码在当前提供的courses测试数据下可以正常输出正确结果,会依次打印42、10两个数值,对应两门课的总练习量,但存在两处可以优化的潜在问题:

  • 未给reduce设置初始累加值:如果某门课程的parts数组为空,代码会直接抛出TypeError。建议始终给数值累加场景的reduce添加初始值0,既规避边界报错,也让代码逻辑更易读。
  • map方法使用不符合设计初衷:map是用来生成新数组的方法,如果你只是需要遍历打印结果,改用forEach更合适;如果需要存储计算结果,直接接收map的返回值即可,不需要仅在回调中执行打印操作。

优化后代码示例

仅需要打印结果的写法

courses.forEach(course => {
  const total = course.parts.reduce((s, p) => s + p.exercises, 0)
  console.log(`${course.name}总练习量:${total}`)
})

需要保留计算结果的写法

// 得到包含每门课总练习量的新数组
const courseTotalList = courses.map(course => ({
  id: course.id,
  name: course.name,
  totalExercises: course.parts.reduce((s, p) => s + p.exercises, 0)
}))
// 可以按需使用这个结果数组
console.log(courseTotalList)

内容的提问来源于stack exchange,提问作者Kim-Jun-Un

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:36:07