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

使用二维数组与嵌套循环创建网格,结果数组出现undefined问题

解决二维网格数组出现undefined的问题

你的代码出现undefined的核心原因是:

  • 定义的columns数组是空的,没有任何元素,循环中访问columns[j]必然返回undefined
  • 代码里的rows变量完全没被使用,属于冗余代码

修复方案1:填充默认值

如果需要给网格填充固定默认值(比如0),可以直接在赋值时指定:

function makeGrid(numColumns, numRows) {
  var grid = [];
  for(let i = 0; i < numRows; i++) { 
     grid[i] = [];
     for(let j = 0; j < numColumns; j++) {
       grid[i][j] = 0; // 替换为你需要的默认值,比如null、''等
     }
  }
  return grid;
}

console.log(makeGrid(3,4));

修复方案2:填充行列索引标识

如果需要区分每个格子的位置,可以用行号和列号的组合作为值:

function makeGrid(numColumns, numRows) {
  var grid = [];
  for(let i = 0; i < numRows; i++) { 
     grid[i] = [];
     for(let j = 0; j < numColumns; j++) {
       grid[i][j] = `行${i+1}列${j+1}`;
     }
  }
  return grid;
}

console.log(makeGrid(3,4));

修复方案3:基于原逻辑完善(如果确实需要用到columns数组)

如果你原本想通过columns数组定义每列的初始值,需要先给columns填充内容:

function makeGrid(numColumns, numRows) {
  var grid = [];
  // 先初始化columns数组,比如填充默认值
  var columns = new Array(numColumns).fill(0);
  for(let i = 0; i < numRows; i++) { 
     grid[i] = [...columns]; // 直接复制columns数组作为行
  }
  return grid;
}

console.log(makeGrid(3,4));

内容的提问来源于stack exchange,提问作者wawa.xxiv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:24:08