[ --- Sortieren Assoziative Arrays? --- ]
Steve_M
- javascript
Hi,
wie kann ich in Javascript den Value einer Assoziative Array alphabetisch sortieren?
liste_guppen_daten = new Array();
liste_guppen_daten["32"] = "Kalender";
liste_guppen_daten["33"] = "Beispiele";
liste_guppen_daten["21"] = "Werkzeuge";
liste_guppen_daten["70"] = "Computerartikel";
liste_guppen_daten["7"] = "Taschen, Koffer, Rucksäcke";
Gruß St_
Moin!
Hi,
wie kann ich in Javascript den Value einer Assoziative Array alphabetisch sortieren?
Es gibt in Javascript keine assoziativen Arrays. Arrays haben immer numerische Indices.
Assoziative "Dinger" sind tatsächlich Objekte, denen man beliebige Eigenschaften zuweist.
Außerdem wird bei deiner Frage nicht deutlich, was du sortiert haben willst. Die Inhalte des Objekts, oder die Schlüsselwerte.
liste_guppen_daten = new Array();
Das ist falsch, es muß heißen:
liste_guppen_daten = new Object();
Siehe dazu auch den Abschnitt in SELFHTML: http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays
liste_guppen_daten["32"] = "Kalender";
liste_guppen_daten["33"] = "Beispiele";
liste_guppen_daten["21"] = "Werkzeuge";
liste_guppen_daten["70"] = "Computerartikel";
liste_guppen_daten["7"] = "Taschen, Koffer, Rucksäcke";
Dass die Schlüsselwerte Strings sind, aber aus Zahlen bestehen, verstärkt die Unklarheiten noch.
- Sven Rautenberg
Hallo,
Ich weiß auch nicht, ob ich dich richtig verstanden habe, aber probiers mal so (zumindst sind die Sachen dann nach Beispiele, Computerartikel ... sortiert):
var liste_guppen_daten = new Array();
liste_guppen_daten.push(new Array(32,"Kalender"));
liste_guppen_daten.push(new Array(33,"Beispiele"));
liste_guppen_daten.push(new Array(21,"Werkzeuge"));
liste_guppen_daten.push(new Array(70,"Computerartikel"));
liste_guppen_daten.push(new Array(7,"Taschen, Koffer, Rucksäcke"));
liste_guppen_daten.sort(Numsort1);
for (var j=0;j<liste_guppen_daten.length;j++) {
alert(liste_guppen_daten[j][0] + " : " + liste_guppen_daten[j][1]);
}
}
function Numsort1 (a, b) {
if (a[1]<b[1]) return -1;
if (a[1]>b[1]) return 1;
return 0;
}
Grüße
Ruth