J'ai un modèle avec des milliers d'objets. Je me demandais quelle serait la manière la plus efficace de les stocker et de retrouver un seul objet une fois que j'ai son identifiant. Les identifiants sont des nombres longs.
Dans l'option 1, il s'agit d'un tableau simple avec un index incrémentiel. Dans l'option 2, il s'agit d'un tableau associatif et peut-être d'un objet, si cela fait une différence. Ma question est de savoir laquelle est la plus efficace, lorsque j'ai besoin de récupérer un seul objet, mais aussi parfois de les parcourir en boucle et de les trier.
Option 1 avec un tableau non associatif :
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];
}
}
Option deux avec tableau associatif :
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Mise à jour :
OK, je comprends que l'utilisation d'un tableau dans la deuxième option est hors de question. Donc la ligne de déclaration de la deuxième option devrait être : var a = {};
La seule question qui se pose est la suivante : qu'est-ce qui est le plus performant pour récupérer un objet avec un identifiant donné : un tableau ou un objet dont l'identifiant est la clé.
Et aussi, la réponse changera-t-elle si je dois trier la liste plusieurs fois ?