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

JS统计数组被11整除元素数量遇≥111返回0的问题排查

问题分析与修复方案

现有代码的错误点

  • 错误1:Array.forEach的回调函数中执行return仅能终止当前轮次的回调执行,既不能中断整个遍历流程,也无法让外层div函数直接返回结果,因此你写的return 0逻辑完全不会生效,遍历会一直执行到所有元素处理完成。
  • 错误2:判断逻辑顺序错误,当前代码先判断是否能被11整除,再判断是否≥111,若遇到类似121这类同时满足两个条件的数值,会优先触发计数逻辑,直接跳过≥111的判断,导致异常值检测失效。
  • 错误3:两个判断为互斥分支,只要触发了value % 11 === 0的条件,就会执行回调的return,≥111的判断逻辑永远不会对这类数值生效,进一步扩大了异常漏检的问题。

修复后的代码

推荐改用支持直接中断返回的普通for循环实现,逻辑最直观:

function div(list) {
  let counter = 0
  for (const value of list) {
    // 优先判断是否满足异常终止条件
    if (value >= 111) {
      return 0
    }
    // 再判断是否符合计数条件
    if (value % 11 === 0) {
      counter++
    }
  }
  return counter
}

// 测试效果
console.log(div([11,12,22,33])) // 输出 3
console.log(div([11,12,22,33,136])) // 输出 0
console.log(div([11, 22, 33, 44 , 116])) // 输出 0

如果希望继续使用数组遍历API,可选择支持中断的Array.some实现:

function div(list) {
  let counter = 0
  const hasInvalid = list.some(value => {
    if (value >= 111) return true
    if (value % 11 === 0) counter++
    return false
  })
  return hasInvalid ? 0 : counter
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:54:02