我不确定Javascript引擎(特别是浏览器引擎)如何存储数组。
例如 - 这会占用多少内存?
var x = new Array(0, 1, 2, 1000, 100000000);
我想将整数日期映射为数组索引,但我需要确定这不是一个坏主意。
答案 0 :(得分:11)
阵列只有几种方式“特殊”:
length
属性,可跟踪最大的数字属性“name”如果将位置10299123存储在一个全新的数组中,运行时不会耗尽所有内存分配一个实际的空数组。相反,它存储您要存储的任何内容,并确保length
更新为10299124。
现在特别关注日期的问题,如果你在谈论存储时间戳,那就是(我认为)它们比32位整数更大。数组索引仅限于该大小。但是,所有这些都意味着length
将不正确。如果你真的不关心任何数组的东西,那么你真正需要的只是一个普通的对象:
var dateStorage = {};
dateStorage[someDate.getTime()] = "whatever";
JavaScript对象可以用作名称 - 值映射,只要名称可以表示为字符串(对于数字来说显然是正确的)。