Don P: Array scheibchenweiße ausgeben

Beitrag lesen

Hallo Gunnar,

Was deine richtige Lösung betrifft:

var sortedArray = ["A", "B", "C", "D"];

var shuffledArray = new Array();
for (var i = sortedArray.length; i > 1;)
{
  var r = Math.floor(Math.random() * i); // Zufallszahl aus Bereich 0 ≤ r < i
                                         // Bereich nimmt mit jedem Schleifendurchlauf um 1 ab
  shuffledArray[--i] = sortedArray[r];   // vermindere Schleifenindex
                                         // kopiere zufällig ausgewähltes Element ans Ende des Zielarrays
  sortedArray.splice(r, 1);              // lösche eben kopiertes Element aus Ursprungsarray
                                         // damit ist vermindertes i gleich aktueller sortedArray.length
}
shuffledArray[0] = sortedArray[0];

  
  
Die hatte ich erst gar nicht gesehen. Man kann dabei sogar noch eine Zeile sparen:  
  
  
~~~javascript
var sortedArray = ["A", "B", "C", "D"];  
var shuffledArray = new Array();  
for (var i = sortedArray.length; i > 1;)  
{  
  var r = Math.floor(Math.random() * i);           // Zufallszahl aus Bereich 0 ≤ r < i  
                                                   // Bereich nimmt mit jedem Schleifendurchlauf um 1 ab  
  shuffledArray[--i] = sortedArray.splice(r, 1);   // vermindere Schleifenindex  
                                                   // verschiebe zufällig ausgewähltes Element ans Ende des Zielarrays  
                                                   // damit ist vermindertes i gleich aktueller sortedArray.length  
}  
shuffledArray[0] = sortedArray[0];

Gruß, Don P