Wie man ein JS-Objekt von Objekten?

Ich gebaut habe, ein Objekt in PHP, verwendet die Funktionen json_encode Funktion und senden Sie es als ein JSON-string auf meinem JS script über ajax. Dann habe ich konvertiert es zurück in ein Objekt. Das problem, das ich habe ist, dass ich wollte, dass das Objekt in der Reihenfolge, in der Sie ursprünglich erstellt wurde. Bitte sehen Sie sich dieses Bild von dem, was das Objekt aussieht, wenn ich ihn in JS:

Wie man ein JS-Objekt von Objekten?

Wenn ich das Objekt erstellt hat, es wurde sortiert nach dem Feld "Kunde" in alphabetischer Reihenfolge. Der name des Kunden, beginnend mit Einer kommen würde, den ersten, B den zweiten, etc. Wie Sie sehen können, jetzt ist das erste element des Objekts als Kunde beginnend mit S. Es sieht aus wie es lief irgendwie automatisch sortiert, indem der Schlüssel von der top-level-Objekt, das eine ganze Zahl, so verstehe ich, warum dies passiert ist.

So, ich möchte zu tun ist, neu zu Sortieren, die dieses Objekt so, dass alle sub-Objekte werden sortiert nach der customer Feld alphabetisch sortiert. Ist das möglich? Wenn ja, wie mache ich es?

Dank!

  • Haben Sie Durchlaufen das Objekt zu überprüfen? Chrome Dev-Tools zeigen nicht die Objekt-Eigenschaften, die in der aktuellen iteration um. Bitte beachten Sie, dass Objekte nicht über eine definierte standard-cross-browser-iteration um, aber diese in der Regel hinsichtlich der Reihenfolge, in der die Eigenschaften wurden Hinzugefügt.
  • Nein, es ist nicht möglich, die Art eines Objekts. Objekte werden immer ungeordneter.
  • ja, ich iteriert über Sie, das ist, wo ich zum ersten mal das problem. bei der Verwendung einer for-Schleife, die Objekte iterieren in der Reihenfolge erscheinen Sie im Bild.
  • Könnten Sie besser dran, wenn jeder Zeile ein object Eintrag in einer array; Sie könnte dann Sortieren Sie die array durch den Kunden-Namen. verlassen Sie sich nicht auf die iteration, um ein Objekt in JavaScript.
  • Ja, Ihre beste Wette ist, übersetzen Sie das Objekt zu einem array als @Mathletics vorgeschlagen.
  • Nur ergänzend @Mathletics Vorschlag. Nachdem Sie Ihre array (nennen wir es json_array) so Sortieren Sie es durch, dies zu tun: json_array.sort(function(a, b){return a.customer > b.customer? 1: -1;});
  • ja, dass ist es, dass die Werke, nach der Verwendung dieses zu konvertieren es in ein array: data = $.map(data, function(k, v) { return [k]; });
  • Wenn Sie haben die Kontrolle über das Objekt, ein array, die auf der server-Seite anstelle der Rückgabe ein Objekt, das Sie noch haben, Sie zu massieren.

Schreibe einen Kommentar