Json Liste sortieren?
Guten Tag,
wie kann man eine Json Liste anhand der Werte mit JavaScript / Node JS sortieren?
Also das aus:
{
"userone": "2",
"usertwo": "57",
"userthree": "40"
}
folgendes wird:
{
"userone": "2",
"userthree": "40",
"usertwo": "57"
}
Danke für alle Antworten!
2 Antworten
Seit ES2015 iterieren die meisten Browser Objekteigenschaften wie folgt:
- Ganzzahlschlüssel in aufsteigender Reihenfolge (und Zeichenfolgen wie "1", die als Ganzzahlen analysiert werden)
- Zeichenfolgenschlüssel in der Reihenfolge der Einfügung
- Symbolnamen in der Reihenfolge der Einfügung
Dieses Verhalten wird in der internen Methode [[OwnPropertyKeys]] definiert.
Wenn Ihre Objekte nur über die Strings-Schlüssel verfügen, können Sie ein sortiertes Objekt abrufen, indem Sie ein neues erstellen und dessen Eigenschaften in der erforderlichen Reihenfolge einfügen.
Sie können auch ein temporäres Array von Objekten der Form {'key': '...', 'value': '...'} und die Methode sort() verwenden, um die Elemente in sortierter Reihenfolge abzurufen.
// Eingangsdaten
var data = {
'userone": '2",
'usertwo": '57",
'userthree": '40',
};
// Hilfsarray von Objekten
var dataArray = [];
Object.keys(data).forEach(function(key) {
dataArray.push({ 'key': key, 'value': data[key] });
});
// Sortierung
dataArray.sort(function(a, b) {
return a['value'] - b['value'];
});
// Objekt mit Eigenschaften in der gewünschten Reihenfolge
var result = {};
dataArray.forEach(function(item) {
result[item['key']] = item['value'];
});
// Ausgangsdaten
console.log('dataArray', dataArray);
console.log('result', result);
Ergebnisse in der Browserkonsole:

Das sind Attribute von einem Objekt. Die sollen keine Reihenfolge haben.
Wenn du das vor hast, dann ist das ein Fehler in deinem Design.