0

我目前有 64 个值(1-64),每个值返回不同的结果。我有一个包含一系列数字的数组设置

var battleships = ['1', '2', '3', '6']

if ($.inArray(String($(this).data("value")), battleships) > -1) { 
    $(this).addClass("success").removeClass("pointer");
    }

我将如何使数组分配(例如)1 到 64 之间的 26 个随机数,然后 if 语句可以拾取这些随机数。

4

2 回答 2

0

你可以有一个函数来获取最小值和最大值之间的随机数,如下所示:

function getRandomBetween(min, max) {
    return Math.random() * (max - min) + min;
}

然后你可以循环 64 次来填充你的数组。

for (var i = 0; i < 64; i++) {

    battleships.push(getRandomBetween(1, 64));
}
于 2013-09-02T12:56:04.107 回答
0
function getDistinctNumbers(count) {
  var values = [];
  for (var i=1; i<=64; i++)
    values.push(i);

  values.sort(function(a,b){return Math.round(Math.random() * 2) -1;});
  values.length = count +1;
  return values;
}

基本上,你用你想要的值填充一个数组,把它打乱,然后减少它的长度以满足你的需要。如果 count 大于 64,则数组将填充undefined值。

如果您的需求发生变化并且由于某种原因,64 变成了一个很大的数字,而 24 仍然相对较低,那么简单地添加随机数并确保您不添加重复项比随机排序一个巨大的数组更快,但目前这是最快的解决方案。

这是一个带有代码的 JsBin:http: //jsbin.com/UwAYACe/1/edit

于 2013-09-02T12:59:00.817 回答