什么将使用更多内存,items1每个项目是一个数组或items2每个项目是一个对象:
var items1=[['James Bond',8,40],
...,
['Superman',9999,36]];
var items2=[{Name,'James Bond',strength:8,coolness:40},
...,
{Name,'Superman',strength:9999,coolness:36}];
哪种方法可以获取数据search1或search2?
var search1=items[432][2];
var search2=items2[432]["coolness"];
PS:给定的分数是非正式的,我个人对2个字符的看法
第二次编辑:我有一张测试图片,但正如菲利克斯指出的那样。这更正确: http://jsperf.com/sparse-objects/3表示数组查找速度提高了20%。
答案 0 :(得分:3)
我不是最好的编写单元测试,但这是一个简单的例子,它告诉我没有太大的区别:
// see code in fiddle
http://jsfiddle.net/ryanwheale/HbHxv`
这是另一个有更多输出和控制的东西:
// see code in fiddle
http://jsfiddle.net/ryanwheale/HbHxv/4/
我喜欢第二个选项,因为您可以通过开发工具中的Chrome时间轴查看每种方法占用的内存量。开始录制,并多次单击“对象”按钮,等待几秒钟,然后多次单击“阵列”按钮。您将看到对象消耗的内存大于Arrays使用的内存。在执行时间方面,阵列似乎也略微受到青睐。但是,我们谈论的是一百万件......这是非常不现实的。