Mam model z prawdopodobnie tysiącami obiektów. Zastanawiałem się, jaki byłby najskuteczniejszy sposób przechowywania ich i pobierania pojedynczego obiektu, gdy mam jego identyfikator. Identyfikatory to długie liczby.
Więc to są 2 opcje, o których myślałem. w opcji pierwszej jest to prosta tablica z rosnącym indeksem. w opcji 2 jest to tablica asocjacyjna i być może obiekt, jeśli ma znaczenie. Moje pytanie brzmi, który z nich jest bardziej wydajny, gdy najczęściej potrzebuję pobrać pojedynczy obiekt, ale czasami też przechodzę przez niego w pętli i sortuję.
Opcja pierwsza z tablicą nieasocjacyjną:
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];
}
}
Opcja druga z tablicą asocjacyjną:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Aktualizacja:
OK, rozumiem, że użycie tablicy w drugiej opcji jest wykluczone. Zatem w linii deklaracji druga opcja naprawdę powinna brzmieć: var a = {};
a jedyne pytanie brzmi: co działa lepiej w pobieraniu obiektu o podanym identyfikatorze: tablica lub obiekt, w którym id jest kluczem.
a także, czy odpowiedź ulegnie zmianie, jeśli będę musiał wielokrotnie sortować listę?