生成数组中的随机数,没有任何重复的数字

时间:2016-04-27 18:59:59

标签: javascript arrays

我正在尝试创建一个长度为78的随机数的数组。我不知道如何搜索整个数组并检查最后一个条目是否重复并删除它。有人请帮忙。

function initAll() {
var balls = LoadInBingoBalls();
for(i=0; i < balls.length;i++)
        {
            (balls[i]);
        }
    }

function setSquare (numSquare) {
    var BingoSquare = "square" + numSquare.toString();

    document.getElementById(BingoSquare).innerHTML  = RandomNumber(MaxNo);
}

var RandomNumber = function (max) {
return Math.floor(Math.random() * max) + 1;
}

function LoadInBingoBalls(){

var first = 0;
var last = 78;
var random;

 var bag = [];

//Heres the part i get confused!
for (var i = first; i <= last; i++) {

do
         bag.push(i) = setSquare(i);

    while(bag.indexOf(i) !== -1)             
  }

 return bag;
 }
 }

2 个答案:

答案 0 :(得分:2)

此函数将创建数组并在推送之前检查它是否包含数字:

工作示例:https://jsbin.com/cabofa/1/edit?js,console

function randNum (max) {
return Math.floor(Math.random() * max) + 1;
}

function makeArray(n) {
  var arr = [];
  while (arr.length < n) {
    var random = randNum(n);
    if (arr.indexOf(random) === -1) {
      arr.push(random);
    }
  }
  return arr;
}

答案 1 :(得分:0)

创建一个包含所有可能值的数组:

function shuffle(a) {
    var j, x, i;
    for (i = a.length; i; i -= 1) {
        j = Math.floor(Math.random() * i);
        x = a[i - 1];
        a[i - 1] = a[j];
        a[j] = x;
    }

    return a;
}

var shuffled = shuffle(possibles);

将该值数组随机播放:

var popped = shuffled.pop();
console.log(popped);

现在从新数组中弹出一个值以从中获取随机元素:

for(i=0; i<shuffled.length; i++) {
    console.log(shuffled.pop());
}

您可以根据需要多次调用pop(),直到数组为空,这将返回undefined。例如:

{{1}}