gpt4 book ai didi

JavaScript 二维数组导致 "Cannot read property ' undefined' of undefined"

转载 作者:行者123 更新时间:2023-11-30 00:10:14 25 4
gpt4 key购买 nike

我正试图从 javascript 中的全局二维数组中读取,它给我“无法读取未定义的属性‘undefined’”。

这是我定义数组的方式:

var cell = {visited:false, left:true, top:true, right:true, bottom:true}

var cells = new Array(10);

for (i = 0; i < 10; i++) //Initiate 2d cells array.
{
cells[i] = new Array(cell,cell,cell,cell,cell,cell,cell,cell,cell,cell);
}

我稍后会像这样访问它:

if(x != 0) //Left
{
if(cells[x-1][y].visited == false)
{
//Do something
}
}

x 和 y 永远不会超出定义的数组范围,所以我不确定为什么会这样。

谢谢!

最佳答案

要创建全局变量,您需要在全局范围内创建它,或者在声明时省略 var 关键字。如我所见,您使用了 var 关键字,因此只有在全局范围内创建的变量才可以是全局变量。

只需使用 cells = new Array(10); 而不是 var cells = new Array(10);

顺便说一句。如果可能,最好避免使用全局变量。

建议

此外,我建议您以这种方式创建二维数组。您通过引用传递您的 cell 变量。所以在一个地方改变它会在所有地方改变它。

cells = new Array(10).fill().map(function(cell) {
return new Array(10).fill().map(function() {
return {visited:false, left:true, top:true, right:true, bottom:true};
})
});

关于JavaScript 二维数组导致 "Cannot read property ' undefined' of undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817336/

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