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
是一个包含两个成员(0
和1
)的数组,每个成员都是一个数组。
当你访问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
有两个元素[]
和[]
,所以它将有索引0
和1
,所以如果你设置si
为1
或0
,它将工作。
var arr = [[],[]];
var si = 1;
var c = 0;
if (arr[si][c] == null)
{
arr[si][c] = {
code : "Test",
};
}
alert(arr[si][c].code);