gpt4 book ai didi

javascript - javascript数组的空元素占用内存吗?

转载 作者:行者123 更新时间:2023-12-03 08:46:38 26 4
gpt4 key购买 nike

通常,我会转换数据数组,以便稍后在代码中更快地访问元素,假设该元素是具有 ID 属性的对象,然后我将此属性设置为数组中元素的键。举个例子,假设我有这个:

[{id: 1, name: "a"}, {id: 2, name: "b"}, 等等..]

变成了

[1 => {name: "a"}, 2 => {name: "b"}, 等等...]

然后我可以简单地使用 a[2] 而无需迭代数组来查找 ID = 2 的元素

问题是某些值可能会丢失,从而导致数组中的元素为空:

  1599,
<2 empty items>,
1105,
892,
<2 empty items>,
86,
1695,
999,
<1 empty item>,
967,
1663,
<3 empty items>,
1673,
<4 empty items>,
1043,
998,
1350,
1688,
<3 empty items>,
2013,
<2 empty items>,
136,
1463,
1632,
<1 empty item>,
1827,
1680,
1293,
<2 empty items>,
844,
1696,
1108,
<1 empty item>,
925,
<6 empty items>,
1144,
<7 empty items>,
905,
<3 empty items>,
2006,
<7 empty items>,
1876,
<2 empty items>,
1609,
<2 empty items>,
2232,
<1 empty item>,
1561,
<1 empty item>,
2203,
<1 empty item>,
1400,
<3 empty items>,
1381,
1287,
1312,
<2 empty items>,
933,
... 4011 more items ]

这些是否使用内存,我应该担心吗?

最佳答案

是的,你可以自己轻松验证。创建以下类

class EmptyArray {
constructor(size) {
this.array = new Array(size)
}
}

转到任何内置的 chrome 页面,例如 chrome://version/(只是为了拥有一个非常简单的静态页面),打开开发工具并在时间轴选项上选择分配检测(没有堆栈记录),开始记录然后创建 3实例

a = new EmptyArray(1)
a = new EmptyArray(90)
a = new EmptyArray(90000)

停止录制,然后检查这3个实例的保留大小,你会发现它们的大小相差很大

这是截图 enter image description here

关于javascript - javascript数组的空元素占用内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61224260/

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