Json Liste sortieren?

2 Antworten

Seit ES2015 iterieren die meisten Browser Objekteigenschaften wie folgt:

  1. Ganzzahlschlüssel in aufsteigender Reihenfolge (und Zeichenfolgen wie "1", die als Ganzzahlen analysiert werden)
  2. Zeichenfolgenschlüssel in der Reihenfolge der Einfügung
  3. 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:

Bild zum Beitrag

Woher ich das weiß:Berufserfahrung – Ich erstelle Wordpress-Themes, Plugins und Online-calculator
 - (Computer, JavaScript, node.js)

Das sind Attribute von einem Objekt. Die sollen keine Reihenfolge haben.

Wenn du das vor hast, dann ist das ein Fehler in deinem Design.