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