JS嵌套for循环给嵌套数组赋值报Cannot set property '0' of undefined错误怎么解决
错误原因
你初始化的array仅第一层索引为0的位置是空数组,当外层循环变量i大于等于1时,array[i]的值为undefined,此时尝试访问并赋值array[i][j],就会触发TypeError: Cannot set property '0' of undefined报错。
修复方案
- 方案1:保留现有全局
array变量,在赋值每行元素前先初始化当前行数组
let array = []; function generateField(width, height) { for (let i = 0; i < height; i++) { // 初始化当前行的空数组 array[i] = []; for (let j = 0; j < width; j++) { array[i][j] = Math.floor(Math.random() * 3); }; }; console.log(array); return array; } generateField(5, 5);
- 方案2:函数内部创建结果数组,避免全局变量污染,写法更简洁
function generateField(width, height) { const array = []; for (let i = 0; i < height; i++) { const row = []; for (let j = 0; j < width; j++) { row.push(Math.floor(Math.random() * 3)); } array.push(row); } console.log(array); return array; } generateField(5, 5);
内容的提问来源于stack exchange,提问作者Thai To
相关产品推荐
相关产品推荐

