我在一个数组中有100个值,但我需要在每次单击一个按钮时随机选择5个值,并且我有一个值,例如a = 10,这个值不应该在5个选定值中。
我尝试了不同的方式,但我无法在jquery中执行此操作。请任何帮助我。
答案 0 :(得分:2)
Dunno,如果它必须是jQuery,但这里是一个纯粹的JS解决方案。 “input”是包含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);
}
}
答案 1 :(得分:1)
以下代码可能有所帮助。 calculateRandoms函数每次从数字数组中计算5个不同的随机数。随机数不能是excludedNumber的值。您可以更改randomCount变量以修改calculateRandoms将生成的随机数的数量。
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>
答案 2 :(得分:0)
您也可以随机使用原始数组
function reorder(src) {
return src.sort(function (a, b) { return 1 - (Math.random() * 2); });
}
你可以像这样获得前5名:
yourArray = reorder(yourArray).slice(0, 5);