随机计数,没有重复

时间:2013-11-22 20:34:03

标签: javascript jquery html random

我正在寻找没有重复数字的随机计数 我发现这样的事情没有随机评论

        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)然后创建数组并选择无重复的随机数。

我在网上寻找长时间的帮助而没有任何积极的结果。

2 个答案:

答案 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);