2016-05-13 124 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

我看到我现在要去的地方有错,并且一个循环已经解决了它,谢谢。 –

相关问题