So ändern Sie die Reihenfolge der Felder in JSON
Szenario: Überlegen Sie, habe ich ein JSON-Dokumente wie folgt:
{
"name": "David",
"age" : 78,
"NoOfVisits" : 4
}
Fragen: ich wollte die Reihenfolge ändern/Reihenfolge der Felder in das Dokument, die sagen, ich will age
, NoOfVisits
& dann schließlich name
.
Ab jetzt bin ich das speichern der Werte in temporären Variablen, löschen Sie das Feld & Neuerstellung der gleichen Feld. Da die Umverteilung nicht funktioniert 🙁
Habe ich es in folgender Weise:
temp = doc["age"];
delete doc['age'];
doc["age"] = temp;
temp = doc["NoOfVisits "];
delete doc['NoOfVisits '];
doc["NoOfVisits"] = temp;
temp = doc["name"];
delete doc['name'];
doc["name"] = temp;
So, dass ich das gewünschte bestellt JSON-Dokument. Diese Anforderung ist in der eigentümlichen Art, aber ich möchte immer noch einige effiziente Lösung
Frage: Kann mir jemand helfen, mit effizienten Weg, um das gleiche zu erreichen?
Macht es überhaupt Sinn? Objekt-Eigenschaften in JS sind nicht bestellt.
Gerade von Quelle: "ein Objekt ist Ein unordered Satz von name/Wert-Paaren." (Hervorhebung von mir)
Who cares. Objekt ist unordered set jedenfalls.
Was auch immer. Hängt der browser, OS, Speicher, Zustand, etc...
wenn Sie wollen, um zu gehen, um in einer for-Schleife, sollte man wohl eher überlegen ein array. Objekte sind nur ungeordnet, und niemand kann Sie sich anders Verhalten.
Gerade von Quelle: "ein Objekt ist Ein unordered Satz von name/Wert-Paaren." (Hervorhebung von mir)
Who cares. Objekt ist unordered set jedenfalls.
Was auch immer. Hängt der browser, OS, Speicher, Zustand, etc...
wenn Sie wollen, um zu gehen, um in einer for-Schleife, sollte man wohl eher überlegen ein array. Objekte sind nur ungeordnet, und niemand kann Sie sich anders Verhalten.
InformationsquelleAutor Amol M Kulkarni | 2013-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man ändern könnte dies mit
JSON.stringify()
tun, wie
den Schlüssel von Ihnen gewünschten Reihenfolge in ein array und Versorgung auf die Funktion. dann analysieren Sie das Ergebnis zurück zu json.
hier ist ein Beispiel-fiddle.
Dies scheint nicht zu funktionieren für verschachtelte Objekte
InformationsquelleAutor mithunsatheesh
Objekte haben keine bestimmte Reihenfolge.
Update:
ES3-Spezifikationen
ES5-Spezifikationen
Jedoch. Wenn Sie möchten, verlassen Sie sich auf die V8-Implementierungen um.
Halten Sie diese in Ihrem Geist.
Beim Durchlaufen eines Objekts, V8 iteriert wie folgt
Gezeigt, die im folgenden Beispiel
gibt die Ausgabe
Wenn Sie wollen, garantieren die Ordnung ...
(MDN)
Verdammt, das langsame internet, mdn-Referenz kommen
-1: Keine spezifische Reihenfolge ist eigentlich ein Auftrag. Node.js Objekte haben ein, um die Einblendung um. Browser implementieren, wie Sie wollen.
eigentlich die meisten Implementierungen erhalten eine Reihenfolge, eine alphabetische wörtlich Instanziierung und der inertion, um die explizite zugeordneten Eigenschaften. Der Punkt ist der standard definiert es als ungeordnet, so sollten Sie sich nicht darauf verlassen, dass der Auftrag von einer bestimmten Implementierung
Ich sehe ein node.js tag in Frage. V8-Objekte haben eine insertion um.
InformationsquelleAutor Moritz Roessler
Trotz Zustimmung mit Kommentaren und Antworten, die JS nicht definiert die Reihenfolge der Eigenschaften eines Objekts finde ich mich mit einem etwas ähnlichen problem zu Euch und so werde ich versuchen, Ihre Frage zu beantworten:
Es könnte auch verwendet werden zum kopieren oder extrahieren einer Untermenge von Eigenschaften von einem Objekt.
Hinweis: mein problem mit sich bringt Bearbeitung der Eigenschaften in einer vordefinierten Reihenfolge und diese Funktion bietet die Grundlage dafür, dass auch.
InformationsquelleAutor HBP
ECMA-262 nicht angeben, enumeration um. Die de-facto-standard zu entsprechen, einsetzen, um, der V8 auch nicht,, aber mit einer Ausnahme: V8 gibt keine Garantien auf die Aufzählung, um für die array-Indizes (also, der name einer Eigenschaft, die analysiert werden kann als ein 32-bit unsigned integer).
Ihre gültige Lösung, es ist der einzige Weg, das zu tun, node.js aber anstatt Sie zu löschen und einfügen von neuen Eigenschaften können Sie direkt tun:
Habe ich nicht getestet, wenn Sie einfach tun,
ist auch gültig.
var o
Lösung scheint sehr nett zu sein... Danke Gabriel LamasInformationsquelleAutor Gabriel Llamas
In Bezug auf JSON, gibt es keine Ordnung, im Gegensatz zu einem array, wobei jedes Objekt hat einen index. wenn Sie möchten, dass eine bestimmte Reihenfolge, müssen Sie etwas tun, wie dieses verwandeln es in ein array:
Aber in dies zu tun, Sie sind fehlt den Punkt von JSON
InformationsquelleAutor legacy
Wie bereits erwähnt, JavaScript Objekt-Eigenschaften sind keine garantiert, um (denken Sie an es, macht es keinen Sinn, eine zu haben?).
Wenn Sie wirklich brauchen, um haben einen Auftrag, Sie könnte verwenden Sie ein array wie:
oder:
Ich würde nicht wollen, um zu sehen, diese in meinem code. So eine bessere Vorstellung zu überdenken, was Sie versuchen zu erreichen.
InformationsquelleAutor adrianp