理解javascript中多维数组的语法

时间:2014-06-05 07:13:13

标签: javascript

var test = [[
  [1,2],[2,3],[3,4]
]];
alert(test[[0]].length);

这让我回归3,但我无法理解这究竟是什么意思。怎么会有这个结果?

5 个答案:

答案 0 :(得分:2)

JavaScript中没有多维数组。只有嵌套数组。

[            //  test
  [          //    test[0]
    [1,2],   //      test[0][0]
    [2,3],   //      test[0][1]
    [3,4]    //      test[0][2]
  ]          //
]            //

如您所见,test[0]的长度为3。

test[[0]]在语义上不正确(*)并折叠为test[0]


(*)索引运算符([])需要一个数字,例如test[0]。如果您没有向其传递数字(例如您传递数组test[[0]]的{​​{1}}情况),则首先会转换为字符串。 (这是因为下面的第一个注释。)

通过使用逗号连接其成员,将数组转换为字符串。 [0][0].toString(),因此"0"相当于test[[0]],相当于test["0"]

注意:

  • 方括号也用于属性访问,因此test[0]test["length"]相同。
  • 因此,像test.length这样可怕的东西相当于test[[0]][["length"]])并会给你test[0].length
  • 3之类的内容将是test[[0,0]] - 由于该数组上没有名为test["0,0"]的属性,因此您将获得"0,0"

答案 1 :(得分:0)

数组test[0]包含三个项目:

  • [1,2]
  • [2,3]
  • 并[3,4]

因此,length的结果是3。

数组test的长度只有一个,因为test只包含一个数组:

  • [1,2],[2,3],[3,4]

实际上这不是一个多维数组,它只是一个包含数组的数组(称为锯齿状数组或嵌套数组)。

答案 2 :(得分:0)

test [[0]]与test [0]相同,test [0]是数组

[1,2],[2,3],[3,4]

由这些元素组成。

如果要访问,例如[2,3],则需要使用以下语法:

test[0][1]

test[0][1].length会给你2。

答案 3 :(得分:0)

如果你想获得第一个数组长度的长度,那么写

alert(test[0][0].length);

答案 4 :(得分:0)

这是一个嵌套数组。数组数组。

如果扩展您的示例,将会更清楚:

var test = [
    [
        [1,2],[2,3],[3,4]
    ], 
    [
        [5,6],[7,8],[9,9],[6,7]
    ], 
];
alert(test[[1]].length);

现在,您的测试是一个包含两个数组的数组。第一个是3个数组的数组。第二个是4个数组的数组。

现在,test.length为2. test[0].length为3. test[1].length为4. [[n]]只是崩溃。

演示:http://jsfiddle.net/abhitalks/6H7Lj/