Javascript 为什么这个2d数组会出错?

Javascript 为什么这个2d数组会出错?,javascript,multidimensional-array,Javascript,Multidimensional Array,您好,我正在尝试运行此示例代码,但遇到一个错误,即无法调用未定义的属性“0” 令人尴尬的是,如果我使用数值而不是变量“si”和“c”作为索引,错误就不会出现 在JS中是否可能不能使用变量作为索引?我认为它确实适用于非二维数组 谢谢大家并致以最诚挚的问候JavaScript没有任何二维数组的概念。只是包含其他数组的数组 arr[si][c]是arr[5][0] arr是一个包含两个成员的数组(0和1),每个成员都是一个数组 当您访问arr[5]时,您会得到未定义的,因为您已经超出了末尾 未定义[0

您好,我正在尝试运行此示例代码,但遇到一个错误,即无法调用未定义的属性“0”

令人尴尬的是,如果我使用数值而不是变量“si”和“c”作为索引,错误就不会出现

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


谢谢大家并致以最诚挚的问候

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

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

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

当您访问
arr[5]
时,您会得到
未定义的
,因为您已经超出了末尾

未定义[0]
是一个错误

令人尴尬的是,如果我使用数值而不是变量“si”和“c”作为索引,错误就不会出现

如果使用文字而不是变量,则会出现相同的错误。大概你的工作测试涉及不同的数字

var arr=[[],[];
if(arr[5][0]==null)
{
arr[5][0]={
代码:“测试”,
};
}

警报(arr[5][0]。代码)JavaScript没有任何二维数组的概念。只是包含其他数组的数组

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

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

当您访问
arr[5]
时,您会得到
未定义的
,因为您已经超出了末尾

未定义[0]
是一个错误

令人尴尬的是,如果我使用数值而不是变量“si”和“c”作为索引,错误就不会出现

如果使用文字而不是变量,则会出现相同的错误。大概你的工作测试涉及不同的数字

var arr=[[],[];
if(arr[5][0]==null)
{
arr[5][0]={
代码:“测试”,
};
}

警报(arr[5][0]。代码)
您可以先检查
arr[si].length-1
是否大于或等于
c
。大概是这样的:

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

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

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

您正在访问未定义的数组索引
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]={
代码:“测试”,
};
}

警报(arr[si][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]={
代码:“测试”,
};
}

警报(arr[si][c]。代码)
那不是2d数组-它是Arrawy数组。可能与See重复。另外,还有一种多维JS数组的迷你库。它适用于3维,但你肯定可以修改为2维。这不是一个2d数组,而是一个arrawys数组。可能与See重复。此外,还有一个建议的用于一种多维JS数组的迷你库。这是三维的,但你肯定可以修改为2。嗨,谢谢你的解释。但是我如何创建一个二维数组呢?索引应该是我从数据库中得到的一个数字。所以它不会是0-N,而是一些类似glike的东西:5,10,100,200,300,300,400,500。@Wintersun-你不能。我让你回到答案的第一句话。您必须在需要的外部数组的索引处显式创建一个数组。您好,谢谢您的解释。但是我如何创建一个二维数组呢?索引应该是我从数据库中得到的一个数字。所以它不会是0-N,而是一些类似glike的东西:5,10,100,200,300,300,400,500。@Wintersun-你不能。我让你回到答案的第一句话。必须在所需外部数组的索引处显式创建一个数组。