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”和“c”作为索引,则错误不会显示出来!
在JS中你有可能不能将变量用作索引吗?我认为它确实适用于非二维数组。
谢谢你,以及最好的问候
答案 0 :(得分:6)
JavaScript没有任何二维数组的概念。只是包含其他数组的数组。
arr[si][c]
是arr[5][0]
。
arr
是一个包含两个成员(0
和1
)的数组,每个成员都是一个数组。
当您访问arr[5]
时,您会获得undefined
,因为您已经超越了结束。
undefined[0]
是一个错误。
尴尬的是,如果我使用数值而不是变量“si”和“c”作为索引,则错误不会显示出来!
如果使用文字而不是变量,则会出现相同的错误。据推测,您的工作测试涉及不同的数字。
var arr = [[],[]];
if (arr[5][0] == null)
{
arr[5][0] = {
code : "Test",
};
}
alert(arr[5][0].code);
答案 1 :(得分:0)
您可以先尝试检查arr[si].length-1
是否大于或等于c
。像这样的东西:
if((arr[si].length-1)>c)
答案 2 :(得分:0)
您正在访问未定义的数组索引
arr[5]
即5
,如定义arr
中有两个元素[]
和[]
,因此它将具有索引0
和{{1}因此,如果您将1
设置为si
或1
,则可以使用。
0