2016-05-13 23 views
1

Ich habe ein Array von Strings und erfordern nur 4 davon (zufällig) in ein anderes Array platziert werden.Auswählen von zufälligen Array-Elementen und Platzieren in einem anderen

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"]; 
var b = []; 
function selectColours(){ 
    var toRandomise = a[Math.floor(Math.random() * 4)]; 
    b.push(toRandomise); 
} 
console.log(b); 

Mein Problem ist, dass die Konsole nichts erscheint.

+2

Rufst du 'selectColours()'? –

+0

Auf diese Weise gelangen Sie nicht weiter als "Blau". Ersetzen Sie 'a [Math.floor (Math.random() * 4)]' durch 'a [Math.floor (Math.random() * a.length)] – Redu

Antwort

2

Sie müssen auch Zufallswert 4mal hinzufügen, damit Sie für Schleife

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"]; 
 
var b = []; 
 

 
function selectColours() { 
 
    for (var i = 0; i < 4; i++) { 
 
    var toRandomise = a[Math.floor(Math.random() * 4)]; 
 
    b.push(toRandomise); 
 
    } 
 
} 
 

 
selectColours() 
 
console.log(b);

Sie auch Rekursion verwenden können, verwenden können.

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"]; 
 
var b = [], count = 0; 
 

 

 
function selectColours() { 
 
    if (count == 4) return true; 
 
    b.push(a[Math.floor(Math.random() * 4)]); 
 
    count++; 
 
    selectColours(); 
 
} 
 

 
selectColours() 
 
console.log(b);

3

Nun, Sie führen nicht wirklich die Funktion, die Sie erstellt haben. Einfach deklarieren.

Schreiben Sie einfach selectColors(); direkt vor dem console.log

+0

Dies zeigt nur eine zufällige Zeichenfolge, nicht die 4 das muss ich im Array gespeichert haben. –

+0

Wenn Sie vier Strings wollen, sollten Sie sie in eine Schleife legen. Gerade jetzt erhalten Sie nur eine Zufallszahl zwischen 0 und 3. Beachten Sie auch, dass Sie die Elemente entfernen müssen, wenn Sie nicht möchten, dass Ergebnisse dupliziert werden (mit zwei "Rot" s zum Beispiel). – GMchris

+0

Ich sehe, wo ich jetzt falsch liege und eine Schleife hat es gelöst, danke. –

Verwandte Themen