Wie sortiere ich ein JS-Objekt-Literal?

8

Wenn ich dieses JS-Objektliteral habe:

%Vor%

Wie kann ich ein neues, sortiertes Objektliteral erstellen:

%Vor%     
edt 07.06.2011, 15:08
quelle

2 Antworten

9

Re: Wie sortiere ich ein JS-Objekt?

Antwort: Sie können nicht. Stattdessen benötigen Sie eine komplexere Datenstruktur. Sie haben viele Möglichkeiten:

  1. Sie können ein separates Array verwenden, um die Reihenfolge der Objektschlüssel zu speichern. (Dies zeigt @Felix Klings Antwort.) Gut: schneller Abruf über Bestellung oder Name. Schlecht: benötigt eine zweite Datenstruktur, die mit der ersten synchronisiert werden muss.
  2. Anstelle des Objekts, das einfach Eigenschaften und Werte enthält, können die Eigenschaften Objekte enthalten, die die Werte und eine Sortierreihenfolge enthalten. Gut: 1 Datenstruktur. Schnelles Nachschlagen nach dem Namen der Eigenschaft. Schlecht: Langsame Suche nach Reihenfolge (die Struktur muss gescannt werden). Langsame Sortierung.
  3. Verwenden Sie ein Array mit Elementen, die aus Objekten bestehen, die den Schlüssel und den Wert enthalten. Gut: 1 Datenstruktur. Schnelles Nachschlagen bei Bestellung. Schnelle Sortierung. Schlecht: Langsame Suche nach Eigenschaftsnamen (die Struktur muss gescannt werden).

Ich empfehle Lösung 3, da es die JS-Mechanik verwendet, um die Reihenfolge zu verwalten.

Beispiele:

%Vor%

Bearbeitet: Aktualisierter Code zur Korrektur von Tippfehlern. Danke, @Martin Fido

    
Larry K 07.06.2011, 15:49
quelle
6

Objekteigenschaften haben keine bestimmte Reihenfolge (die Reihenfolge ist implementierungsabhängig) und Sie können die Eigenschaften nicht sortieren.

Sie müssen ein Array von Schlüsseln behalten und es entsprechend sortieren, zum Beispiel:

%Vor%

Jetzt können Sie die Werte des Arrays iterieren und mit ihnen auf die entsprechende Eigenschaft des Objekts zugreifen.

    
Felix Kling 07.06.2011 15:17
quelle