Assoziative Array nach Value sortieren
Javascript ist in Sachen Datentypen nicht gerade gut ausgestatte. Assoziative Arrays lassen sich nur mit ein wenig würgen hinzaubern. Sortieren nach Value erfordert einen noch grösseren Würg. Sortieren nach Value ist immer dann nötig wenn man ein Assoziative Array zum Zählen von Items verwendet. Das Item wird dann als Key verwendet und im Value wird das Vorkommen gezählt.
Im nachfolgenden Beispiel werden in einem assoziativen Array (allTags) die Tags als Key verwendet und im Value wird das vorkommen des Tags gezählt. Und so gehts:
Im nachfolgenden Beispiel werden in einem assoziativen Array (allTags) die Tags als Key verwendet und im Value wird das vorkommen des Tags gezählt. Und so gehts:
//Sortier-Funktion, grösster Wert am Anfang
function Numsort (a, b) {
return b - a;
}
//Hilfsvariablen
var valueArray = new Array();
var sortedArray = new Object();
//Alle Values in ein Array speichern
for (var tag in allTags){
valueArray.push( allTags[tag] );
}
//Array mit Sortier-Funktion sortieren
valueArray.sort(Numsort);
//Neues Bucket-Array anlege
for(var i = 0; i<valueArray.length;++i){
sortedArray[ valueArray[i] ] = new Array();
}
//Buckets mit den Tags fühlen
for (var tag in allTags){
sortedArray[ allTags[tag] ].push(tag);
}
//Tags der Reihenfolge nach ausgeben
for (var tags in sortedArray) {
for(var i = 0; i<sortedArray[tags].length;++i) {
tag = sortedArray[tags][i];
alert("Tag \""+tag+"\" kommt "+tags+"mal vor." );
}
}
comments
add a comment
The Trackback URL to this comment is:
http://leo.freeflux.net/blog/plugin=trackback(1823).xml
This blog is gravatar enabled.
Your email adress will never be published.
Comment spam will be deleted!





