gruss Mathias, hallo Schlachtung/Metzelei,
...
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 }
];
volle zustimmung.
...
Die automatische Umwandlung vom Object in den Array mit Objects ist
natürlich möglich: ...
... waere hier aber zuviel des guten, ...
... 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.
... denn falls Slaughter die datenstruktur nicht aendern kann, bevor sich
diese im client in der von ihm vorgestellten form manifestiert, ist er
gezwungen, mit »for in« zu iterieren. und dann kann er die ausgabe auch
gleich ohne den umweg einer transformation erstellen.
desweiteren sollte diese objekt-iteration mit der methode [link:http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object:hasOwnProperty@title=[hasOwnProperty]]
abgefedert werden.
moegliche beispielhafte loesung, wie sie von Cheatah und Struppi
angesprochen wurde:
[code lang=javascript](function () {
var company = {
auftragsbearbeitung: {
completed: 5
},
versand: {
completed: 4
},
auftragsannahme: {
completed: 6
},
angebotserstellung: {
completed: 10
}
};
var log = "", itemName, itemNames = [];
for (itemName in company) {
if (company.hasOwnProperty(itemName)) {
itemNames.push(itemName);
}
}
itemNames.sort(/*function (a, b) {
return ((a < b) ? (-1) : ((a > b) ? (1) : (0)));
}/).forEach(function (str/, idx, arr*/) {
log += (str + ".completed : " + company[str].completed + "\n");
});
alert(log);
})();/*
obigen code in einem halbwegs modernen gecko (wegen [forEach])
einfach mal nach [[link:http://www.squarefree.com/shell/shell.html]]
pasten und bestaetigen.
*/
... und ja, man kann sich nicht in jedem fall darauf verlassen, dass
[hasOwnProperty] oder array-iteratoren dem client zur verfuegung stehen.
genannte methoden lassen sich aber abpruefen und nachimplementieren.
so long - peterS. - pseliger@gmx.net
--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - [Douglas Crockford](http://javascript.crockford.com/)
[ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:\]](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%28+fl%3A%29+br%3A%3E+va%3A%28+ls%3A%26+fo%3A%29+rl%3A%29+n3%3B%7D+n4%3A%7D+ss%3A%7D+de%3A%B5+js%3A%7D+mo%3A%3F+zu%3A%5D)