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

JS for循环未遍历数组、if语句值不更新:提取数字中最大连续5位数问题

代码问题排查及修复方案

存在的问题

  • return 语句放在for循环内部,循环仅执行1次就直接返回,未完成全量遍历,是循环未正常工作的核心原因。
  • 循环终止条件设置错误,连续5位数字的起始下标最大只能到数组长度-5,原代码的i < arr.length-1会导致后续取数下标越界,拼接得到的字符串转数字后为NaN,导致比较逻辑失效。
  • 最大值更新逻辑错误,每次循环直接将结果变量赋值为当前两组5位数的较大值,未和历史最大值比较,会出现大数值被后续小数值覆盖的问题。
  • 冗余的双变量逻辑,每次循环不需要同时计算两组5位数字,仅需计算当前下标对应的连续5位即可,也能避免下标越界问题。

修复后代码

function solution(digits){
  let arr = digits.split("");
  let maxNum = 0;
  // 控制起始下标范围,保证总能取到完整的5位数字
  for(let i = 0; i <= arr.length - 5; i++){
    // 截取连续5位转数字
    let current = parseInt(arr.slice(i, i+5).join(""), 10);
    // 大于历史最大值才更新
    if(current > maxNum){
      maxNum = current;
    }
  }
  // 遍历完成后再返回最终结果
  return maxNum;
}

效果验证

输入示例字符串"34858299999234"调用函数,返回结果为99999,符合预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:03