2016-05-13 161 views
1

我有一個字符串數組,只需要其中4個(隨機)放入另一個數組。選擇隨機數組元素並放入另一個

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); 

我的問題是,控制檯不顯示任何內容。

+2

你叫'selectColours()'? –

+0

這樣你就無法比「藍色」更進一步。用'a [Math.floor(Math.random()* a.length)]替換'a [Math.floor(Math.random()* 4)]'' – Redu

回答

2

還需要增加隨機值的4倍,所以你可以使用循環

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);

您還可以使用遞歸前右只寫selectColors();

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

嗯,你沒有真正運行你創建的功能。簡單地聲明它。

console.log

+0

這樣做只顯示一個隨機字符串,而不是4我需要將其存儲在數組中。 –

+0

如果你想要四個字符串,而不是一個,你應該把它放在一個循環中。現在你只是得到一個0到3之間的隨機數字。還要注意,如果你不想要結果被複制(例如有兩個「紅色」),你需要刪除這些元素。 – GMchris

+0

我看到我現在要去的地方有錯,並且一個循環已經解決了它,謝謝。 –

相關問題