JS-Array per Zufall neu sortieren
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
array
aufruf
beschreibung
code
dank
element
erzeugen
funktion
http
null
objekt
reihenfolge
shuffle
sortieren
sortierung
url
zahl
zufall
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
function shuffle (myArray) { var arrayLength = myArray.length; if ( arrayLength == 0 ) return false; // false wenn das Array leer ist for(var i =0; i < arrayLength; i++) { //zufaellige Nummer aus dem Array auswaehlen var j = Math.floor( Math.random() * ( arrayLength-1 ) ); //aktuelle Arraynummer mit dem zufaellig generierten austauschen (swap) var tempi = myArray[i]; var tempj = myArray[j]; myArray[i] = tempj; myArray[j] = tempi; } return myArray; }
http://simuliertes.lima-city.de/spielplatz/js/shuffle.html
Beitrag zuletzt geändert: 20.12.2010 11:08:15 von simuliertes -
Das geht viel, viel einfacher:
var shuffle = function(){ return Math.random()-0.5; }; arr = arr.sort(shuffle);
Für alle Sortieraufgaben eines einzelnen Arrays sollte man die Funktion Array.sort() benutzen, schließlich ist sie dazu da!
Wie kommt nun diese zufällige Sortierung zustande? Nun die Funktion shuffle bekommt als Parameter 2 Elemente des Arrays übergeben (auch wenn man dies hier nicht sieht, da ich sie mir spare) und "sortiert" diese anhand des Rückgabewertes. Dieser Rückgabewert kann <0, 0, oder >0 (kleiner, gleich, oder größer als Null) sein, wenn er 0 ist, oder <0, dann bleibt die Reihenfolge der beiden Elemente gleich, wenn er aber >0 ist, dann werden die beiden Elemente getauscht.
Was brint uns das aber um eine Zufällige Sortierung zu erzeugen?
Da hilft uns die Funktion Math.random() weiter, diese erzeugt eine zufällige Zahl zwischen 0 und 1, wenn man von dieser jetzt 0,5 abzieht, erhält man zufällig eine Zahl, die größer, kleiner oder gleich null ist, oder?
Somit kann man so das Array zufällig sortieren.
Bei selfhtml wird diese Variante ebenfalls beschrieben.
Bei Mozilla gibt es ebenfalls eine sehr ausführliche Beschreibung der Funktion. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage