我一直在努力。 jQuery计数器函数,从0
到6
连续随机计数但不重复数字直到循环结束,即直到数组中第7位的计数。目前以下代码适用于我,但数字重复。请帮忙!
function beginTimer() {
if ($('#timer').html().length == 0) {
timer(0) ;
}
}
function timer(i) {
setTimeout("timer(" + (i) + ")", 1000);
$('#timer').html(Math.floor(Math.random() * 6));
}
答案 0 :(得分:1)
你需要创建一个7位数的数组,按shuffling the deck随机化数组(不使用sort,尽管fearless leader says),输出它们,然后开始再次。如果不维护已经输出的数字列表,就无法避免重复。
var digits = [0, 1, 2, 3, 4, 5, 6];
digits.shuffle = function () {
var i = this.length,
j, temp;
while (--i >= 0) {
j = Math.floor(Math.random() * (i + 1));
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
this.lastOutput = -1;
};
digits.shuffle();
var output = function () {
var i = ++digits.lastOutput;
if (i >= digits.length) {
digits.shuffle();
i = 0;
}
$('#timer').html(digits[i]);
this.lastOutput = i;
setTimeout(output, 1000);
};
output();
答案 1 :(得分:0)
您可以创建一个“数字”数组并从中挑选,直到它们不再存在。
var digits = [];
// populate our digits array with 0-6
for(var i = 0; i < 6; i++)
digits.push(i);
function timer() {
// are there still digits remaining?
if(!digits.length)
return;
// select a random digit and remove it from the array
var digit = digits.splice( Math.floor( Math.random() * digits.length ), 1 );
$('#timer').html(digit);
setTimeout(timer, 1000);
}
<强> JSFiddle 强>
答案 2 :(得分:0)
var counted = [];
function count() {
var numb, go = true;
while (go) {
numb = Math.floor(Math.random() * 6);
if (counted.indexOf(numb) == -1) counted.push(numb), go = false;
}
$('#timer').html(numb);
if (counted.length > 5) counted = [];
setTimeout(count, 300);
}