Ich habe ein Modell mit möglicherweise Tausenden von Objekten. Ich habe mich gefragt, wie ich sie am effizientesten speichern und ein einzelnes Objekt abrufen kann, sobald ich seine ID habe. Die IDs sind lange Zahlen.
Das sind also die 2 Optionen, über die ich nachgedacht habe. In Option 1 handelt es sich um ein einfaches Array mit einem inkrementierenden Index. In Option 2 ist es ein assoziatives Array und möglicherweise ein Objekt, wenn es einen Unterschied macht. Meine Frage ist, welches effizienter ist, wenn ich meistens ein einzelnes Objekt abrufen muss, es aber manchmal auch durchlaufen und sortieren muss.
Option eins mit nicht assoziativem Array:
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 zwei mit assoziativem Array:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Aktualisieren:
OK, ich verstehe, dass die Verwendung eines Arrays in der zweiten Option nicht in Frage kommt. Die Deklarationszeile, die zweite Option, sollte also wirklich sein: var a = {};
und die einzige Frage ist: Was funktioniert besser beim Abrufen eines Objekts mit einer bestimmten ID: ein Array oder ein Objekt, bei dem die ID der Schlüssel ist.
und wird sich auch die Antwort ändern, wenn ich die Liste viele Male sortieren muss?