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

在while循环中使用array.includes()导致JavaScript崩溃求助

问题分析与修复

你的代码出现崩溃主要有两个核心问题,逐个拆解:

1. 方法名拼写错误

数组判断元素是否存在的方法是includes(),你写成了include(),少了末尾的s。这个错误会直接抛出TypeError,因为数组没有include这个方法。

2. 死循环问题

你的while循环里,只有当if条件成立时才会执行++i,如果条件不成立(比如i=16、18、20、21这些不在x.time里的值),i就不会递增,导致循环永远停不下来,最终引发浏览器崩溃。

修正后的代码

const test = {
  start: 16,
  end: 22,
};

const x = {
  time: [17, 19],
};

export const TimeTable = () => {
  const map = new Map();

  let i = test.start;
  while (i < test.end) {
    console.log(x.time.some((t) => t == i));

    // 修正方法名拼写,把i的递增移到循环末尾确保每次循环推进
    if (x.time.includes(i)) {
      map.set(i, [i, i + 1]); // 用数组字面量比new Array()更简洁
    }
    // 不管条件是否成立,每次循环都让i加1,避免死循环
    i++;
  }
  return map; // 返回map方便查看结果
};

额外优化点

  • 创建数组用字面量[i, i+1]比new Array()更直观简洁;
  • 循环末尾统一递增i,保证循环能正常结束;
  • 最后返回map,方便验证结果是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:45:42