JavaScript 中的数组与对象效率更新 2017 - 测试和结果原始帖子 - 说明
2022-08-30 02:05:08
我有一个可能包含数千个对象的模型。我想知道一旦我有id,存储它们并检索单个对象的最有效方法是什么。ID 是长数字。
所以这些是我正在考虑的2个选项。在选项一中,它是一个具有递增索引的简单数组。在选项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];
}
更新:
好吧,我明白在第二个选项中使用数组是不可能的。因此,声明行的第二个选项应该是:唯一的问题是:在检索具有给定id的对象时,什么表现更好:数组或id是键的对象。var a = {};
而且,如果我必须多次对列表进行排序,答案会改变吗?