Javascript数组索引基础

Ant*_*thy 5 javascript arrays jquery

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

例如 - 这将使用多少内存?

var x = new Array(0, 1, 2, 1000, 100000000);
Run Code Online (Sandbox Code Playgroud)

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

Poi*_*nty 11

数组只有几种方式"特殊":

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

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

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

var dateStorage = {};

dateStorage[someDate.getTime()] = "whatever";
Run Code Online (Sandbox Code Playgroud)

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