molily: Objekt nach Namen sortieren

Beitrag lesen

Hallo,

Objekte in JavaScript (ECMAScript Edition 3) sind Listen von Name-Werte-Paaren, eine Ordnung existiert nicht. (Dass bei manchen Interpretern beim Durchlaufen mit for-in zufällig die Reihenfolge herauskommt, mit der die Objekteigenschaften gesetzt wurden, ist keine Vorschrift.)

Willst du eine Liste mit Rangordnung, dann sind immer Arrays zu gebrauchen. In deinem Fall könntest du eine Liste von Objects bilden und eine eigene Sortierungsfunktion, die mit dem Namen operiert, der als String in einer Eigenschaft dieses Objects drinsteht:

var arr = [  
  { name : "auftragsannahme", erledigt : 6 },  
  { name : "versand", erledigt : 4 },  
  { name : "auftragsbearbeitung", erledigt : 5 },  
  { name : "angebotserstellung", erledigt : 10 }  
];  
  
arr.sort(function (a, b) {  
  if (a.name < b.name)  
    return -1;  
  if (a.name > b.name)  
    return 1;  
  return 0;  
});  
  
for (var i = 0; i < arr.length; i++) {  
  document.write("<div>" + arr[i].name + " - " + arr[i].erledigt + "<\/div>");  
}

Die automatische Umwandlung vom Object in den Array mit Objects ist natürlich möglich: Man durchläuft das firma-Object und erzeugt für jede Eigenschaft ein Object. Dies füllt man mit dem Namen sowie allen Eigenschaften des Unterobjekts, die man auch über eine for-in-Schleife bekommt.

Mathias