Ho un modello con forse migliaia di oggetti. Mi chiedevo quale sarebbe stato il modo più efficiente per archiviarli e recuperare un singolo oggetto una volta che ho il suo ID. Gli ID sono numeri lunghi.
Quindi queste sono le 2 opzioni a cui stavo pensando. nell'opzione uno è un array semplice con un indice incrementale. nell'opzione 2 è un array associativo e forse un oggetto, se fa la differenza. La mia domanda è quale sia il più efficiente, quando ho principalmente bisogno di recuperare un singolo oggetto, ma a volte anche passare attraverso di essi e ordinare.
Opzione 1 con array non associativo:
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];
}
}
Opzione due con array associativo:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Aggiornare:
OK, capisco che l'uso di un array nella seconda opzione è fuori discussione. Quindi la riga di dichiarazione dovrebbe essere la seconda opzione: var a = {};
e l'unica domanda è: cosa sta andando meglio nel recupero di un oggetto con un dato id: un array o un oggetto in cui l'id è la chiave.
e inoltre, la risposta cambierà se dovrò ordinare l'elenco più volte?