Javascript数组索引基础

时间:2011-08-30 13:58:43

标签: javascript jquery arrays

我不确定Javascript引擎(特别是浏览器引擎)如何存储数组。

例如 - 这会占用多少内存?

var x = new Array(0, 1, 2, 1000, 100000000);

我想将整数日期映射为数组索引,但我需要确定这不是一个坏主意。

1 个答案:

答案 0 :(得分:11)

阵列只有几种方式“特殊”:

  • 他们从原型中获得了一些有趣的类似数组的方法(“slice()”等)
  • 他们有一个“神奇的”length属性,可跟踪最大的数字属性“name”

如果将位置10299123存储在一个全新的数组中,运行时不会耗尽所有内存分配一个实际的空数组。相反,它存储您要存储的任何内容,并确保length更新为10299124。

现在特别关注日期的问题,如果你在谈论存储时间戳,那就是(我认为)它们比32位整数更大。数组索引仅限于该大小。但是,所有这些都意味着length将不正确。如果你真的不关心任何数组的东西,那么你真正需要的只是一个普通的对象:

var dateStorage = {};

dateStorage[someDate.getTime()] = "whatever";

JavaScript对象可以用作名称 - 值映射,只要名称可以表示为字符串(对于数字来说显然是正确的)。