抽奖程序实现逻辑

抽奖程序实现以下功能:

1、可自定义抽奖人数
2、将抽奖人数随机显示到页面
3、停止后按照设定的抽奖人数随机生成对应数量的中奖名单
4、过滤已经生成的中奖名单 进入下一轮抽奖

实现逻辑:

1、设置抽奖名单数组

1
2
3
4
5
6
7
8
var arr = [
{name:'姓名1',mobile:'15877778881'},
{name:'姓名2',mobile:'15877778882'},
{name:'姓名3',mobile:'15877778883'},
{name:'姓名4',mobile:'15877778884'},
{name:'姓名5',mobile:'15877778885'},
{name:'姓名6',mobile:'15877778886'}
]

2、设定中奖人数并随机生成中奖名单后输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var getluckyData = function(){
var num = 3 // 中奖人数
var luck = [] // 中奖名单 索引 用于提取中奖名单
var lucknum = 0 // 计数器 用于 过滤重复索引 只有随机生成的索引不重复 才会累加
var luckyArr = [] // 中奖名单

// 生成不重复的随机中奖名单索引值
while (lucknum < num) {
var tmpluck = Math.floor(Math.random()*arr.length)
if(luck.indexOf(tmpluck) >= 0){
continue;
}else{
luck.push(tmpluck);
lucknum++;
}
}

// 提取中奖名单
for(var i = 0; i < luck.length; i++){
luckyArr.push(arr[luck[i]])
}
console.log(luckyArr)
return luckyArr
}

3、设置定时器 开始抽奖

1
2
var timer = null
timer = setInterval(getluckyData,40)

4、停止定时器并生成中奖名单 停止抽奖

1
2
3
clearInterval(timer)
var newArr = getluckyData()
console.log(newArr)

5、过滤已中奖名单

1
2
3
4
5
6
7
8
9
10
11
newArr.forEach(function(item){
for(var i = 0, flag = true, len = arr.length; i < len;flag ? i++ : i){
if( arr[i] && arr[i].mobile == item.mobile){
arr.splice(i, 1)
flag = false
} else {
flag = true
}
}
})
console.log(arr)

参考链接:https://blog.csdn.net/hunannanhu/article/details/52195983
参考项目:https://github.com/MrHT/yearReward

开积的个人博客