gpt4 book ai didi

javascript - javascript中null是否占用内存?

转载 作者:IT王子 更新时间:2023-10-28 23:29:22 25 4
gpt4 key购买 nike

我遇到以下情况:

var large = [a,b,c,d,e,f,g,h,i];
var small = [a2, b2, c2, null, null, null, null, null, null, i2];

其中两个数组的每个元素都是一个对象。

小数组包含与大数组相关的信息,但并非 large 的每个元素都需要 small 中的关联元素,因此我将其设置为 。但是,我仍然需要保持索引不变,这样我才能执行 large[16].id + ':' + small[16].description 之类的操作。我有一个值大部分为 null 的数组这一事实是否会导致内存使用量增加?

我的问题是我是否会更好地执行 small = [a2,b2,c2,i2] 之类的操作,并在 a2.index = 等属性中设置索引0; b2.index = 1 等等。

我也遇到过使用 undefined 的建议,甚至有人提到了实现链表。我认为我不需要实现链表,因为我不经常添加或删除元素。

最佳答案

数组实际上是对属性进行特殊处理的对象,其名称为数组索引。

通过分配“null”,您可以使每个属性都存在,这将使用非零内存量,并且如上所述会减慢查找速度。

您可以省略不存在的成员,这将导致稀疏数组:

var small = [a2, b2, c2,,,,,,, i2];
// small == [a2, b2, c2,undefined,undefined,undefined,undefined,undefined,undefined, i2]

编辑请注意,如果您将 undefined 显式分配给数组元素(或任何变量),则会占用空间。在这种情况下,要回收内存,您需要显式 delete 元素。我的代码示例中显示的初始化样式从不将 anything 分配给省略的元素,因此它们根本不存在。这可以通过检查这些元素是否作为数组对象的属性来确认:

// continued from above
small.hasOwnProperty('3'); // returns false

small[3] = undefined;
small.hasOwnProperty('3'); // now returns true because the property exists

delete small[3];
small.hasOwnProperty('3'); // returns false again

alert(small.length); // alerts '10', showing that the array itself is still intact.

关于javascript - javascript中null是否占用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499352/

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