我正在寻找没有重复数字的随机计数 我发现这样的事情没有随机评论
var randnums = [0,1,2,3,4,5,6];
setInterval(function() {
var m = Math.floor(Math.random()*randnums.length);
$('ul li:nth-of-type('+(randnums[m])+')').animate({
opacity:1
},400)
console.log(randnums[m])
}, 300);
示例:CODEPEN
我想要完成的任务:
当你查看控制台日志时,你会发现随机不起作用,正如我想的那样。 我认为随机应该适用于例如4,3,5,1,6,2,每个数字的间隔为300。 现在它的工作方式就像每300毫秒选择数字1,2,2,4,5,0等所以4秒之后你就看不到例如1。
第二个想我想要创建脚本来计算元素.lenght元素(li)然后创建数组并选择无重复的随机数。
我在网上寻找长时间的帮助而没有任何积极的结果。
答案 0 :(得分:1)
测试一下:
var randnums = [0, 1, 2, 3, 4, 5, 6],
delay = setInterval(function () {
var m = Math.floor(Math.random() * randnums.length);
console.log(randnums[m]);
randnums.splice(m,1);
if (!randnums.length) {
clearInterval(delay);
}
}, 300);
splice()
是此脚本中非常重要的一部分,它会“丢弃”使用过的数字。我还添加了一个检查,当使用所有数字时,它会停止间隔。
修改强>
您可以使用for
循环创建长度为X的数组,例如:
var randnums = [], n, len = 12;
for (n = 0; n < len; n++) {
randnums.push(n);
}
答案 1 :(得分:0)
拼接的替代方法,如果您希望能够重用数组或循环动画,请尝试以下方法:
var randnums = [0,1,2,3,4,5,6];
randnums.sort(function(a,b) {return Math.random()-0.5;}); // "shuffle" the array
setInterval(function() {
var n;
randnums.push(n = randnums.shift()); // cycle the first element to the back
// do something with n
},300);