BlogKontaktTagcloud

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:

//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." );
}
}

Ähnliche Beiträge:
Parallel Request mit AJAX und PHP
"Defekte" for-in-Schleife in JavaScript
Synchroner Aufruf mit XMLHttpRequest in Firefox
Webtuesday: PHP wins!
Webtuesday: PHP vs. Javascript: which sucks more?
Comments (0)  Permalink

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!

Name*
E-Mail
For Spammers Only
URL
Kommentar*
E-Mail Benachrichtigung bei neuen Kommentaren zu diesem Eintrag
Speichere meine Daten (braucht Cookies)