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

JS扫雷项目报错:uncaught (in promise) TypeError问题求助

解决扫雷项目中的TypeError: cannot set properties of undefined错误

你的错误出在make2DArray函数的实现上,这个函数根本没正确生成二维数组,导致后续给grid[i][j]赋值时,grid[i]是undefined,触发了类型错误。

原函数的问题点:

  • 先创建了长度为cols的数组var arr = new Array(cols);,但立刻用arr = [];把它改成了空数组,直接清空了之前的初始化
  • 循环条件i < arr.length此时arr是空数组,length为0,循环一次都不会执行,返回的arr还是空数组
  • 就算循环能跑,你写的arr[1] = new Array(rows);是固定给索引1的位置赋值,其他索引依然是undefined,而且完全没用到循环变量i

修正后的make2DArray函数:

function make2DArray(cols, rows) {
    var arr = new Array(cols);
    for (var i = 0; i < cols; i++) {
        arr[i] = new Array(rows);
    }
    return arr;
}

补充说明:

你之前尝试添加的for (var j = 0; j < arr.width; j++)没用的原因是:数组没有width属性,应该用length,但更关键的是你没解决原函数里清空数组、循环条件无效这些核心问题。

替换掉原函数后,你的代码就能正常创建二维网格数组,后续初始化Cell实例和调用show()方法就不会报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:42:41