У меня есть модель, возможно, с тысячами объектов. Мне было интересно, какой способ их хранения и извлечения одного объекта был бы наиболее эффективным, если у меня есть его идентификатор. Идентификаторы - длинные числа.
Вот 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];
}
Обновить:
Хорошо, я понимаю, что использование массива во втором варианте исключено. Таким образом, в строке объявления должен быть второй вариант: var a = {};и единственный вопрос: что лучше работает при извлечении объекта с заданным идентификатором: массив или объект, где идентификатор является ключом.
а также изменится ли ответ, если мне придется много раз сортировать список?

