为什么这个二维数组会出错


var arr = [[],[]];
var si = 5;
var c  = 0;
if (arr[si][c] == null)
{
     arr[si][c] = {
           code : "Test",
     };
}
alert(arr[si][c].code);

你好,我正在尝试运行这个示例代码,但我得到一个错误,说属性"0"的一个未定义的不能被调用。

令人尴尬的是,如果我使用数值而不是变量"si"one_answers"c"作为索引,错误不会显示!

是可能的,在JS你不能使用变量作为索引?我认为它确实适用于非二维数组

谢谢你并致以最良好的祝愿

JavaScript没有任何二维数组的概念。只是包含其他数组的数组。

arr[si][c]arr[5][0]

arr是一个包含两个成员(01)的数组,每个成员都是一个数组。

当你访问arr[5]时,你会得到undefined,因为你已经越过了终点。

undefined[0]是一个错误。

令人尴尬的是,如果我使用数值而不是变量"si"one_answers"c"作为索引,错误不会显示!

如果使用字面量而不是变量,则会得到相同的错误。假设您的工作测试涉及不同的数字。

var arr = [[],[]];
if (arr[5][0] == null)
{
     arr[5][0] = {
           code : "Test",
     };
}
alert(arr[5][0].code);

您可以先尝试检查arr[si].length-1是否大于或等于c。像这样:

if((arr[si].length-1)>c)

您正在访问未定义的数组索引arr[5]5,在定义中arr有两个元素[][],所以它将有索引01,所以如果你设置si10,它将工作。

var arr = [[],[]];
var si = 1;
var c  = 0;
if (arr[si][c] == null)
{
     arr[si][c] = {
           code : "Test",
     };
}
alert(arr[si][c].code);

最新更新