JavaScript中的数组与对象效率
我有一个可能有数千个物体的模型。我想知道什么是最有效的存储方式和一旦我拥有它的id后检索单个对象。id是长号。
所以这些是我想到的两个选项。在选项1中,它是一个带有递增索引的简单数组。在选项2中,它是一个关联数组,也许是一个对象,如果它有所不同。我的问题是哪一个更有效,当我主要需要检索单个对象,但有时也循环遍历它们并进行排序。
选项一,非关联数组:
var a = [{id: 29938, name: 'name1'}, {id: 32994, name: 'name1'}];function getObject(id) { for (var i=0; i < a.length; i++) { if (a[i].id == id) return a[i]; }}
选项二与关联数组:
var a = []; // maybe {} makes a difference?a[29938] = {id: 29938, name: 'name1'};a[32994] = {id: 32994, name: 'name1'};function getObject(id) { return a[id];}
更新:
好的,我知道在第二个选项中使用数组是不可能的。因此,第二个选项的声明行应该是:var a = {};
并且唯一的问题是:在检索具有给定id的对象时表现更好:数组或id为关键字的对象。
而且,如果我必须多次对列表进行排序,答案会改变吗?
12345678_0001
相关分类