J'ai un modèle avec peut-être des milliers d'objets. Je me demandais quel serait le moyen le plus efficace de les stocker et de récupérer un seul objet une fois que j'ai son identifiant. Les identifiants sont des nombres longs.
Voici donc les 2 options auxquelles je pensais. dans la première option, c'est un simple tableau avec un index incrémentiel. dans l'option 2, c'est un tableau associatif et peut-être un objet, si cela fait une différence. Ma question est de savoir lequel est le plus efficace, lorsque j'ai principalement besoin de récupérer un seul objet, mais aussi parfois de les parcourir et de les trier.
Option 1 avec 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];
}
Mettre à 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, la deuxième option devrait vraiment être: var a = {};
et la seule question est: qu'est-ce qui fonctionne le mieux pour récupérer un objet avec un id donné: un tableau ou un objet où l'id est la clé.
et aussi, la réponse changera-t-elle si je devrai trier la liste plusieurs fois?