数组的随机数,但不一样| JavaScript的

时间:2016-08-30 18:50:06

标签: javascript arrays

我试图创建一个数字数组。该数组应如下所示:

[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。对于令人困惑的标题感到抱歉,我不知道如何描述它。

2 个答案:

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