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

使用递归检查嵌套数组是否存在数字7的代码调试问题

问题根因
  • 你在forEach回调中调用递归sevenBoom(val)时,没有接收和传递递归的返回值:就算嵌套数组里查到7,递归返回的"Boom!"只会被直接丢弃,外层函数收不到这个结果,自然不会返回。
  • forEach本身不支持中断遍历,就算你拿到了正确的返回值,也没法提前终止遍历把结果返回出去。
  • 函数没有设置兜底返回逻辑,遍历完所有元素都没找到7时,也会默认返回undefined。
修复代码

把forEach替换为可中断的for...of循环,每次递归后判断返回值,拿到"Boom!"就直接向上传递,最后加兜底返回即可:

function sevenBoom(arr) {
  // 当前层级存在7直接返回
  if (arr.includes(7)) return "Boom!";

  for (const item of arr) {
    // 遇到嵌套数组就递归检查
    if (Array.isArray(item)) {
      const checkRes = sevenBoom(item);
      // 递归查到7就直接向上返回,终止遍历
      if (checkRes === "Boom!") return checkRes;
    }
  }

  // 所有层级都没查到7的兜底返回,可按需修改
  return "未找到7";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:00