kostenloser Webspace werbefrei: lima-city


JS-Array per Zufall neu sortieren

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    ishop

    ishop hat kostenlosen Webspace.

    Hallo
    wenn ich ein Javascript Array habe , wie kann ich das dann per Zufall neu sortieren,
    so dass bei jedem Aufruf die Reihenfolge der Einträge durcheinandergewürfelt wird ?
    (und nicht nur 1x und bleibt beim User so wegen Cache oder warum auch immer?)
    Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!