gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 04:51:37 26 4
gpt4 key购买 nike

我用 Javascript 创建了一个数组。我想将数组用于键值对。

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

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

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

谢谢!

Array with length <code>0</code> and properties <code>1454073967313</code>, <code>1454073968645</code>, and <code>1454073969737</code>


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

enter image description here

我了解到的一件事是,Javascript Array 的长度不是实际大小而是最大索引号。

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

最佳答案

这是 javascript 中的众多怪癖之一。

> a = []
[]
> a[4294967295] = 1
1
> a.length
0 // wtf?

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

正如其他人所建议的,如果您有如此大的数字索引,您最好使用对象。

关于Javascript:数组不为空但大小为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com