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.