为什么我这个2d阵列出错了?

时间:2016-11-17 13:50:54

标签: javascript multidimensional-array

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中你有可能不能将变量用作索引吗?我认为它确实适用于非二维数组。

谢谢你,以及最好的问候

3 个答案:

答案 0 :(得分:6)

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

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

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

当您访问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设置为si1,则可以使用。



0