我试图创建一个数字数组。该数组应如下所示:
[1, 2, 1]
或[2, 1, 2]
我已经选择了相同的号码后,我再也不想要这个号码了。
所以我不想要[1, 1, 2]
或[2, 2, 1]
我有以下代码:
var chosenHosts = [];
for (var i = 0; i < match.match_games; ++i) {
var num = 1 + Math.floor(Math.random() * 2);
chosenHosts.push(num);
}
console.log(chosenHosts);
此代码两次推送相同的数字。有没有人知道如何实现如上所述?
P.S。对于令人困惑的标题感到抱歉,我不知道如何描述它。
答案 0 :(得分:4)
这样的东西会起作用
var chosenHosts = [1 + Math.floor(Math.random() * 2)];
for (var i = 1; i < match.match_games; i++) {
var num = chosenHosts[i - 1] == 1 ? 2 : 1;
chosenHosts.push(num);
}
console.log(chosenHosts);
答案 1 :(得分:0)
您可以检查数组中的最后一个元素,并继续创建一个随机数,直到它不同为止。
var chosenHosts = [1 + Math.floor(Math.random() * 2)];
for (var i = 0; i < match.match_games; i++) {
var r = 1 + Math.floor(Math.random() * 2);
while (chosenHosts[i] == r)
r = 1 + Math.floor(Math.random() * 2);
chosenHosts.push(r);
}
console.log(chosenHosts);