gpt4 book ai didi

javascript - 为什么我无法读取未定义的属性 '0'?

转载 作者:行者123 更新时间:2023-11-30 11:03:28 27 4
gpt4 key购买 nike

我正在尝试解决一个挑战,但是当我访问二维数组时,出现错误:

无法读取未定义的属性“0”。

我曾尝试通过添加参数的默认值来解决,但没有成功。

function minesweeper(matrix= [[]]) {

let res = [];

for(let i=0;i<matrix.length;i++){
let temp = [];
for(let j=0;j<matrix.length;j++){
temp.push( count(i,j,matrix) )
}
res.push(temp);
}

console.log(res);
}

function count(idx, jdx, matrix = []){
let count = 0;
for(let i=-1;i<=1;i++){
if(i + idx < 0) continue;

for(let j=-1;j<=1;j++){
if( jdx + j < 0 || (i == 0 && j == 0)) continue;

if(matrix[i+idx][j+jdx] == true) count += 1; // this line
}
}

return count;
}

let matrix = [[true, false, false],
[false, true, false],
[false, false, false]];

minesweeper(matrix);

最佳答案

当 i = 1 且 idx = (matrix.length - 1) 时,您最终会得到未定义的 matrix[matrix.length]。您可以通过为 matrix[i+idx] 添加一个简单的检查来解决这个问题:

function minesweeper(matrix= [[]]) {

let res = [];

for(let i=0;i<matrix.length;i++){
let temp = [];
for(let j=0;j<matrix.length;j++){
temp.push( count(i,j,matrix) )
}
res.push(temp);
}

console.log(res);
}

function count(idx, jdx, matrix = []){
let count = 0;
for(let i=-1;i<=1;i++){
if(i + idx < 0) continue;

for(let j=-1;j<=1;j++){
if( jdx + j < 0 || (i == 0 && j == 0)) continue;
if(matrix[i+idx] && matrix[i+idx][j+jdx] == true) count += 1; // this line
}
}

return count;
}

let matrix = [[true, false, false],
[false, true, false],
[false, false, false]];

minesweeper(matrix);

关于javascript - 为什么我无法读取未定义的属性 '0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56632414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com