求助:如何使用JavaScript的reduce函数计算任务总工时?
计算任务工时总和的正确实现方式
先给你能直接运行的代码,再拆解关键要点:
// 处理后的合法JS数据(把ObjectId转为字符串,前端环境下通常是这种形式) const tasks = { "details": [ { "task": "a", "hours": 5, "_id": "6333fdc699f7cb3da66be656" }, { "task": "2", "hours": 5, "_id": "6335ed42115208d81dffd082" }, { "task": "b", "hours": 6, "_id": "6335ed7d115208d81dffd118" } ] }; // 用reduce计算总工时 const totalHours = tasks.details.reduce((sum, task) => sum + task.hours, 0); console.log(totalHours); // 输出16
关键注意事项:
- 必须在数组上调用reduce:你要操作的是
tasks.details这个数组,不能直接在tasks对象上调用reduce(对象没有这个方法) - 一定要设初始值
0:这是新手最容易踩的坑。如果不设置初始值,reduce会把数组第一个元素作为初始sum,第一次迭代逻辑会直接出错;而且如果数组为空,还会直接报错 - 属性名要对应:确保你访问的是
task.hours,别写错变量名(比如写成hour)
你之前失败的常见原因:
大概率是忘了设置reduce的初始值,或者没有正确定位到details数组。按照上面的代码改一下就能正常运行了。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

