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

使用JavaScript reduce函数计算数组coin属性总和时遇结果未定义错误的求助

问题排查与修复方案

首先,咱们直接说核心问题:你的run函数没有返回计算好的总和值!这就是测试用例报错Error: expected undefined to equal 8600的原因——函数执行完后默认返回undefined,而不是你计算出来的totalcoin。

排查思路拆解

我给你梳理几个可以快速定位这类问题的步骤:

  • 第一步:检查函数返回值:这是最容易忽略但高频出现的问题。当你写了计算逻辑但没把结果return出去,调用方拿到的就是undefined,自然和预期数值不匹配。
  • 第二步:验证reduce的初始值:你这里给reduce传了初始值0,这部分是正确的——如果没传初始值,当数组为空时会报错,而且如果第一个元素结构不符合预期也会出问题,你这步做对了。
  • 第三步:检查reduce回调逻辑:你在回调里累加total + course.coin的逻辑是正确的,每次迭代都在更新总和,这部分没问题。
  • 第四步:清理冗余代码:你定义的i变量完全没用,reduce本身会自动遍历数组的每一项,不需要额外的计数器,删掉它代码更简洁。

修复后的代码

只需要在函数里把计算好的结果返回出去就行,甚至可以简化写法:

基础修复版

function run(courses) {
  return courses.reduce(function(total, course) {
    return total + course.coin;
  }, 0);
}

简洁箭头函数版

如果你的环境支持ES6+,可以写成更简洁的形式:

const run = (courses) => courses.reduce((total, course) => total + course.coin, 0);

现在你再测试这两个输入用例:

  • 输入1的总和会正确返回8600
  • 输入2的总和会正确返回3600

内容的提问来源于stack exchange,提问作者nguyencuc2186

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:32:29