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中你不能使用变量作为索引?我认为它确实适用于非二维数组。
谢谢并致以最良好的问候
发布于 2016-11-17 13:53:41
JavaScript没有任何二维数组的概念。只是包含其他数组的数组。
arr[si][c]
是arr[5][0]
。
arr
是一个具有两个成员(0
和1
)的数组,每个成员都是一个数组。
当你访问arr[5]
时,你会得到undefined
,因为你已经超越了end。
undefined[0]
是一个错误。
令人尴尬的是,如果我使用数值而不是变量"si“和"c”作为索引,错误就不会出现!
如果您使用文字而不是变量,则会得到相同的错误。假设您的工作测试包含不同的数字。
var arr = [[],[]];
if (arr[5][0] == null)
{
arr[5][0] = {
code : "Test",
};
}
alert(arr[5][0].code);
发布于 2016-11-17 13:57:05
您可以先尝试检查arr[si].length-1
是否大于或等于c
。如下所示:
if((arr[si].length-1)>c)
发布于 2016-11-17 14:00:49
您正在访问未定义的数组索引代码,即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);
https://stackoverflow.com/questions/40656681
复制相似问题