javascript数组不确定属性数组[索引]=真/假

javascript数组不确定属性数组[索引]=真/假,javascript,arrays,Javascript,Arrays,我遇到了这个问题,理解了它,但仍然不知道它是什么javascript属性: var array = []; array[1] = true; array[5] = true; console.log(array) #=> [true, true] array[0] #=> undefined array[1] #=> true array[2] #=> undefined array[5] #=> true 有人能给我解释一下吗?感谢JavaScr

我遇到了这个问题,理解了它,但仍然不知道它是什么javascript属性:

var array = [];

array[1] = true;

array[5] = true;

console.log(array) #=> [true, true]

array[0] #=> undefined

array[1]  #=> true

array[2] #=> undefined

array[5] #=> true

有人能给我解释一下吗?感谢JavaScript中的标准数组,其中一个效果是它们天生就是一个数组。也就是说,阵列中可以有空插槽

这就是你在那里创造的。在前三行之后,有一个数组,其中有两个条目,分别位于索引1和5,还有一堆完全空的插槽(索引0、2、3、4)。它的
length
属性将是
6
。当您尝试从数组中检索不存在的元素时,您会得到值
undefined
。(这只是JavaScript一般行为的一个特殊情况:如果您试图检索不存在的对象属性,则会得到值
未定义的


带有稀疏数组的
console.log
的输出将根据
console.log
的实现对其执行的操作而有所不同。关于这个问题的评论表明,控制台可以通过各种不同的方式显示阵列。您可以考虑使用
console.log(array.join())
来获得更一致的结果。这将为您提供
,true,,,,,true
,因为它为不存在的数组项显示空格(或包含值
未定义的
,但在您的情况下,它们不存在)。

控制台.log
将打印
[,true,true]
。请再次检查。实际上它将是
[undefined,true,undefined,undefined,undefined,true]
。甚至是
[1:true,5:true]
。不管怎样,都应该有人解释。最新的chrome打印
[未定义的×1,真的,未定义的×3,真的]
:-|@techfoobar,呃,这太糟糕了。数组是数组,但不是Javascript。它们可能被称为数组,但它们实际上是散列对象。索引只是一个属性,它有一些额外的方法帮助它假装是一个数组。