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

JavaScript使用for循环求数组过滤后元素和时返回0的问题排查

代码错误点

  • 核心错误:你在if分支内声明了sumFiltered求和函数,但始终没有调用它,求和逻辑从未执行,sum2始终保持初始值0
  • 隐含错误:sumFiltered内部取数组元素时错用了外层循环的变量i,而非内层循环的j,就算调用函数也会得到错误的求和结果
  • 逻辑冗余:不需要额外声明sumFiltered函数,也不需要单独用数组存储符合条件的元素,在筛选判断时直接累加即可

修复后的代码

最简写法(直接累加,无需额外存储筛选数组)

function sumSmallNumbers(n) {
  let sum2 = 0;
  for (let i = 0; i < n.length; i++) {
    if (n[i] > 0 && n[i] < 1001) {
      sum2 += n[i];
    }
  }
  return sum2;
}

保留原有筛选数组逻辑的修改版

function sumSmallNumbers(n) {
  let smallNumbers = [];
  var sum2 = 0;
  // 第一步:筛选符合条件的元素
  for (let i = 0; i < n.length; i++) {
    if (n[i] > 0 && n[i] < 1001) {
      smallNumbers.push(n[i]);
    }
  }
  // 第二步:遍历筛选后的数组求和
  for (let j = 0; j < smallNumbers.length; j++) {
    sum2 += smallNumbers[j];
  }
  return sum2;
}

验证示例

输入sumSmallNumbers([1, 1002, -5, 999]),返回结果为1000,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:45:02