Struppi: Kompatibilitätscheck

Beitrag lesen

Hab' ich mittlerweile erfolgreich getan. Allerdings: Der Aufruf bei Arrays von variabler Länge muss sicherheitshalber mittels

if (Array.length>1) Array.shuffle();

erfolgen. Erstens geht das Skript sonst in eine Endlosschleife, und zweitens macht das Mischen eines Arrays mit einem einzigen Element in der Regel nicht sonderlich viel Sinn. :-)

Ist mir bei meinen Tests auch schon aufgefallen, ich hatte das dann aber verdrängt ;-)

Eine einfachere und allgemeinere Lösung ist es die Funktion entsprechens anzupassen:

Array.prototype.shuffle = function() {  
 var i = this.length;  
 if(i < 2) return false;  
 do{  
  var zi = Math.floor(Math.random() * i);  
  var t = this[zi];  
  this[zi] = this[--i];  
  this[i] = t;  
 }while(i)  
 return true;  
}

Struppi.