从一个数组中随机取出几个不重复的项

js简单常见逻辑

最近来了一个新项目!项目中大概有这样一个需求!也就是一种简单常见的抽奖需求!就是用户在抽奖后,会随机发一个抽奖号!等到达开奖时间后,会随机从这些抽奖用户中抽取3个作为中奖用户,那么这个该怎么实现呢?其实很简单!闲着没事干就写来给大家分享,分享!

由于项目初稿还没有下来只是看了下大体流程图 所以就模拟写了下

假设这是抽奖用户数组

 var pricenumber = [
        {
            id: 1,
            number: 1
        },
        {
            id: 2,
            number: 1
        },
        {
            id: 3,
            number: 1
        },
        {
            id: 4,
            number: 1
        },
        {
            id: 5,
            number: 1
        },
    ]

这是核心逻辑

    var min = 0;
    var max = pricenumber.length;
    var array = [];



    for (let i = 0; i < 200000; i++) {
        if (array.length < 3) {
            var radom = parseInt(Math.random() * (max - min) + min)

            if (array.indexOf(pricenumber[radom]) == -1) {
                array.push(pricenumber[radom]);
            }
        }else{
            break;
        }

    }

    console.log(array);

在看了之后想了想也就敲了出来(但是感觉性能可能不太好,先这样搞后期在看优化吧!)

主要思路:
定义一个随机数 这个随机的范围就是(0-数组长度)这样我可以随机的从抽奖用户抽取一个出来,但是为了重复抽到同一个用户所以定义了一个空数组
然后判断一下是否有这个已经被我插进去的用户!

为了避免以上这种情况所以我把循环次数设置的比较大 虽然只抽取三个它不会执行太多(但这也是性能比较差的一种原因)

猜你喜欢

转载自blog.csdn.net/yang939207690/article/details/107693077