【问题标题】:index 0 in the second level javascript arrays二级 javascript 数组中的索引 0
【发布时间】:2016-06-02 02:27:13
【问题描述】:

如果这个级别的长度等于1,我能否知道为什么如果返回多维javascript数组中的第二级条目undefined
示例:

arr = Array(
  Array(1) 
)

以下将返回这个不太可能的结果:undefined,而它应该是 1(或者至少这是我所期望的)

console.log(arr[0][0])

但是当我在该级别(length>1)中拥有的不仅仅是记录时:

arr = Array(
  Array(1,2) 
)

然后尝试:console.log(arr[0][0]),这次返回1
对此问题的任何解释或为什么会发生这种情况将不胜感激
谢谢

【问题讨论】:

  • 冷静的人,即使你回答得非常好,但路人只是讨厌你的缩进或其他什么,你也会在这里投票。这一直在发生。您无法使用新帐户来避免它。在 JS 中,实例化的数组没有被初始化,因此初始值是未定义的。例如,如果您最初需要填写它们,则必须链接 Array.prototype.fill()
  • 可能有三个人认为您之前应该阅读一些文档。但这种行为令人困惑是可以理解的,这就是为什么通常会避免使用Array

标签: javascript arrays multidimensional-array


【解决方案1】:

您应该咨询documentation of the Array constructor

arrayLength
如果传递给 Array 构造函数的唯一参数是介于 0 和 232-1(含)之间的整数,则这将返回一个新的 JavaScript 数组,其中 length 设置为该数字。

Array(1) 不会创建包含元素 1 的数组,它会创建一个 长度 1 且包含一个元素的数组:undefined

要使用不那么模糊的构造函数,请使用数组字面量:

[[1]]

这是一个包含一个包含值1 的数组的数组。

【讨论】:

  • 谢谢,我将在链接中阅读有关此文档的信息(也感谢您的反对票)
  • @Simo:你为什么认为 deceze 否决了你的问题?通常不赞成的人通常不会回答这个问题……如果您反对他的回答,那么这对您来说是一个非常糟糕的举动。毕竟所有回答的人实际上都在试图帮助你......
【解决方案2】:

数组语法

[element0, element1, ..., elementN]
new Array(element0, element1[, ...[, elementN]])
new Array(arrayLength)

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array的语法部分

如果 Array 的参数是一个整数,则它被解释为长度,否则它被解释为内容

这就是为什么你在第一种情况下有一个空的二维数组..

希望这会有所帮助.. 干杯

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 2013-07-25
    • 2013-05-15
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多