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-数组长度)这样我可以随机的从抽奖用户抽取一个出来,但是为了重复抽到同一个用户所以定义了一个空数组
然后判断一下是否有这个已经被我插进去的用户!
为了避免以上这种情况所以我把循环次数设置的比较大 虽然只抽取三个它不会执行太多(但这也是性能比较差的一种原因)