javascript - 理解javascript中多维数组的语法

标签 javascript

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

这返回了 3,但我无法理解这实际上意味着什么。怎么会是这个结果呢?

最佳答案

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]] 情况下,您传递数组 [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" 在该数组上,您将得到 undefined

关于javascript - 理解javascript中多维数组的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053883/

相关文章:

javascript - 无法添加第二个 ng-controller

javascript - 键盘控制的网站

javascript - QuickConnect 相对于 Phonegap 的优势?

php - 刷新页面后记住所选值

javascript - 从不同域中的 frame/iframe 获取顶部窗口 url

javascript - 调整大小需要刷新

javascript - jQUERY 中的 Onclick 显示阻止为无和无为阻止

javascript - 视差/背景位置的特征检测

javascript - fingerprintjs 未在 chrome 扩展中加载

javascript - leetcode 3sum 帮助,我该如何优化这个答案?