Eu tenho um modelo com possivelmente milhares de objetos. Eu queria saber qual seria a maneira mais eficiente de armazená-los e recuperar um único objeto, uma vez que eu tenha o seu ID. Os IDs são números longos.
Então, essas são as 2 opções que eu estava pensando. na opção um, é uma matriz simples com um índice incremental. na opção 2, é uma matriz associativa e talvez um objeto, se faz alguma diferença. Minha pergunta é qual deles é mais eficiente, quando eu geralmente preciso recuperar um único objeto, mas às vezes também os percorre e ordena.
Opção um com matriz não associativa:
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];
}
}
Opção dois com matriz associativa:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Atualizar:
OK, acho que o uso de uma matriz na segunda opção está fora de questão. Portanto, a linha de declaração da segunda opção deve ser realmente:var a = {};
e a única questão é: o que tem um desempenho melhor na recuperação de um objeto com um determinado ID: uma matriz ou um objeto em que o ID é a chave.
e também, a resposta será alterada se tiver que classificar a lista várias vezes?