Pin*_* Li 4 javascript arrays json
我在Javascript中创建一个数组.我想将数组用于键值对.
我可以成功添加新项目并删除项目,但它的长度始终为0.
实际上我遇到的问题是当我想将它转换为JSON字符串时,它显示空字符串:"[]".我只是想知道他们是否相关.我也想知道为什么我不能转换它.
下面是调试信息,它显示数组包含3个对象但长度为0.浏览器是用于Ubuntu的Firefox 44.0.
谢谢!
研究员@georg的想法,我将索引限制在1000并将其余代码保留为以前.一切正常,包括JSON部分.下图显示在我的数组中,实际有4个元素,最大索引是805.
最新的发现,数组真的和最大的索引号一样长.元素的其余部分是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.
正如其他人所建议的那样,如果您拥有如此庞大的数字索引,最好还是使用对象.