Javascript:数组不为空,但大小为0

Pin*_* Li 4 javascript arrays json

我在Javascript中创建一个数组.我想将数组用于键值对.

我可以成功添加新项目并删除项目,但它的长度始终为0.

实际上我遇到的问题是当我想将它转换为JSON字符串时,它显示空字符串:"[]".我只是想知道他们是否相关.我也想知道为什么我不能转换它.

下面是调试信息,它显示数组包含3个对象但长度为0.浏览器是用于Ubuntu的Firefox 44.0.

谢谢!

长度为<code> 0 </ code>且属性<code> 1454073967313 </ code>,<code> 1454073968645 </ code>和<code> 1454073969737 </ code>的数组


研究员@georg的想法,我将索引限制在1000并将其余代码保留为以前.一切正常,包括JSON部分.下图显示在我的数组中,实际有4个元素,最大索引是805.

在此输入图像描述

我学到的一件事是Javascript数组的长度不是实际大小,而是最大索引号.

最新的发现,数组真的和最大的索引号一样长.元素的其余部分是Null.

geo*_*org 13

这是javascript中的许多奇怪之处.

> a = []
[]
> a[4294967295] = 1
1
> a.length
0 // wtf?
Run Code Online (Sandbox Code Playgroud)

问题是Array.length限制为32位,因此其最大值为2^32-1 = 4294967295.如果您提供的索引大于或等于4294967295,则引擎会像往常一样在数组中创建一个新条目,但拒绝更新它length- 不会抛出任何错误.所以你最终获得了一袋属性,length等于0.

正如其他人所建议的那样,如果您拥有如此庞大的数字索引,最好还是使用对象.