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

求助:如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:35:24