我要做的就是随机化运行这些函数的顺序。我知道这是你可以循环的东西,我只是不确定如何。
randomRadio = Math.round(Math.random() * 4);
if (randomRadio === 4) {
createRadios("d");
createRadios("c");
createRadios("b");
createRadios("a");
} else if (randomRadio === 3) {
createRadios("c");
createRadios("a");
createRadios("b");
createRadios("d");
} else if (randomRadio === 2) {
createRadios("a");
createRadios("b");
createRadios("c");
createRadios("d");
} else {
createRadios("b");
createRadios("a");
createRadios("c");
createRadios("d");
}
答案 0 :(得分:2)
我首先将可能的值放在数组中,然后继续删除数组的随机成员(并将其与函数一起使用),直到数组为空。
这不会将它限制在你上面选择的排列上,但它会使用所有这些排列。
var radio_to_create = [ 'a', 'b', 'c', 'd' ];
while(radio_to_create.length) {
var index = Math.floor(Math.random() * radio_to_create.length);
createRadios(radio_to_create.splice(index, 1)[0]);
}
答案 1 :(得分:0)
这相当于你的代码:
var radios = ["a", "b", "c", "d"];
randomRadio = Math.floor(Math.random() * radios.length);
radios.unshift(radios.splice(randomRadio, 1)[0]);
for (var i = 0; i < array.length; ++i)
createRadios(radios[i]);
for (var x= 0; x < 20; ++x) {
var radios = ["a", "b", "c", "d"];
randomRadio = Math.floor(Math.random() * radios.length);
radios.unshift(radios.splice(randomRadio, 1)[0]);
document.getElementById("output").innerHTML += JSON.stringify(radios) + "\n";
}
<pre id="output"></pre>
splice
从数组中删除项并返回已删除的项:因此radios.splice(randomRadio, 1)
将返回一个数组,其中包含数组中的一个随机项,此项将不再位于原始数组中。< / p>
unshift
只会在数组的开头添加此项目。
另一方面,如果您只是想对数组进行随机播放,请参阅Fisher-Yates shuffle。