理解javascript中多维数组的语法
这将返回3,但我无法理解这实际上意味着什么。为什么会出现这种结果?数组理解javascript中多维数组的语法,javascript,Javascript,这将返回3,但我无法理解这实际上意味着什么。为什么会出现这种结果?数组测试[0]包含三项: [1,2] [2,3] [3,4] 因此,长度的结果是3 数组test的长度只有一个,因为test只包含一个数组: [1,2],[2,3],[3,4] 事实上,这不是一个多维数组,它只是一个包含数组的数组(称为锯齿数组或嵌套数组)。JavaScript中没有多维数组。只有嵌套数组 var test = [[ [1,2],[2,3],[3,4] ]]; alert(test[[0]].lengt
测试[0]
包含三项:
- [1,2]
- [2,3]
- [3,4]
长度的结果是3
数组test
的长度只有一个,因为test
只包含一个数组:
- [1,2],[2,3],[3,4]
事实上,这不是一个多维数组,它只是一个包含数组的数组(称为锯齿数组或嵌套数组)。JavaScript中没有多维数组。只有嵌套数组
var test = [[
[1,2],[2,3],[3,4]
]];
alert(test[[0]].length);
如您所见,test[0]
的长度为三
而test[[0]]
在语义上不正确(*),并折叠为test[0]
(*)索引运算符([]
)需要一个数字,如测试[0]
中所示。如果您没有向它传递一个数字(如在测试[[0]]
中,您传递了数组[0]
),则首先会发生到字符串的转换。(这是因为下面的第一个注释。)
数组通过用逗号连接其成员而转换为字符串<代码>[0]。toString()
是“0”
,因此测试[[0]]
相当于测试[“0”]
,这相当于测试[0]
注:
- 方括号也用于属性访问,因此
与test[“length”]
相同李>test.length
- 因此,像
这样可怕的东西相当于test[[0]][[“length”]]]
,并将为您提供test[0].length
3
- 类似于
的内容将是test[[0,0]]
——由于该数组上没有名为test[“0,0”]
的属性,因此将得到“0,0”
未定义的
[ // test
[ // test[0]
[1,2], // test[0][0]
[2,3], // test[0][1]
[3,4] // test[0][2]
] //
] //
由这些元素组成
例如,如果要访问,[2,3]
,则需要使用以下语法:
[1,2],[2,3],[3,4]
和
测试[0][1]。length
将为您提供2。如果您想获得第一个数组的长度,请写入
test[0][1]
这是一个嵌套数组。数组的数组 如果您扩展您的示例,就会更加清楚:
alert(test[0][0].length);
现在,您的测试是一个由两个数组组成的数组。第一个是由3个数组组成的数组。第二个是由4个数组组成的数组
现在,test.length
是2<代码>测试[0]。长度为3<代码>测试[1]。长度为4<代码>[[n]]只会崩溃
演示:如果这些语法相同,即test[[0]]和test[0],那么为什么支持这种语法?@patrickhoffman否,它将
[0]
转换为字符串,这就是test[[0]]
工作而test[[0,0]
不工作的原因。
var test = [
[
[1,2],[2,3],[3,4]
],
[
[5,6],[7,8],[9,9],[6,7]
],
];
alert(test[[1]].length);