2010-08-31 53 views
0

我有一个数组中的100个值,但我需要随机选择5个值,每次点击一个按钮,并且我有一个值,例如a = 10,这个值不应该出现在5个选定的值中。如何从jquery的数组值100中选择随机5值?

我尝试了不同的方式,但我不能在jQuery中做到这一点。请任何帮助我。

回答

1

下面的代码可能会有所帮助。 calculateRandoms函数每次从numbers数组计算5个不同的随机数。随机数不能是excludedNumber的值。您可以更改randomCount变量以修改随机数的数量,这些随机数将计算随机数生成。

var excludedNumber = 10; 
 
var randomCount = 5; 
 
var numbers = []; 
 
var randoms = []; 
 
var vPool=""; 
 

 
// initialize array, fill it from 0 to 99 
 
for (var i = 0; i < 100; i++) numbers.push(i + 1); 
 
$(document).ready(function() { 
 
    $("#mybutton").click(function() { 
 
     calculateRandoms(randomCount);    
 
    }); 
 
}); 
 
function calculateRandoms(c) { 
 
    randoms = []; 
 
    for (var i = 0; i < c; i++) { 
 
     var rnd = excludedNumber; 
 
     while (rnd == excludedNumber && $.inArray(rnd, numbers)){ 
 
      rnd = numbers[Math.floor(Math.random() * numbers.length)]; 
 
      randoms.push(rnd); 
 
     } 
 
    } 
 
    vPool=''; 
 
    $.each(randoms, function(i, val) { 
 
     vPool+=val + "<br />"; 
 
     $("#res").html(vPool); 
 
    }); 
 
    //alert(randoms); 
 
    //$("#res").html(randoms); 
 
    //console.log(randoms); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="button" id="mybutton" value="Generate" /> 
 
<div id="res"></div>

+0

顺便说一下,calculateRandoms使用方法jquery.inArray查找数组中的值。 – Zafer 2010-08-31 20:18:43

2

不知道,如果它严格需要jQuery,但这里是一个纯粹的JS解决方案。 “输入”是包含100个值的数组。

var output = []; 

for (var i = 0, len = input.length; i < 5; ++i) { 
var randomIndex = Math.floor(Math.random() * input.length); 

if (input[randomIndex] != 10) { 
    output.push(input[randomIndex); 
} 
} 
+0

的jQuery的脚本? – Elankeeran 2010-08-31 19:56:19

0

您还可以借助随机原始数组

function reorder(src) { 
    return src.sort(function (a, b) { return 1 - (Math.random() * 2); }); 
} 

,你可以得到的前5名这样的:

yourArray = reorder(yourArray).slice(0, 5);