抽奖程序实现以下功能:
1、可自定义抽奖人数
2、将抽奖人数随机显示到页面
3、停止后按照设定的抽奖人数随机生成对应数量的中奖名单
4、过滤已经生成的中奖名单 进入下一轮抽奖
实现逻辑:
1、设置抽奖名单数组1
2
3
4
5
6
7
8var 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
24var 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
2var timer = null
timer = setInterval(getluckyData,40)
4、停止定时器并生成中奖名单 停止抽奖1
2
3clearInterval(timer)
var newArr = getluckyData()
console.log(newArr)
5、过滤已中奖名单1
2
3
4
5
6
7
8
9
10
11newArr.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