【抽奖】前端js实现抽奖功能

需求

从数组中随机挑选中奖成员

js代码实现

let list = ['王大', 'hhh', '撒旦', '是小甜甜', 'ghj4232', '啊哦额', '笔头3862', '*', '阿兴', '梦d', '阿萨斯', 'Json', 'B塔', 'ss']

// 抽3个
for(let i =0; i < 3; i ++) {
	const random = Math.floor(Math.random() * list.length)
	
	console.log(list[random])
	
	// list.splice(random , 1)
	list[random] = list[list.length - 1]
	list.length--
}

【抽奖】前端js实现抽奖功能

说明

1:为什么不选择用splice?
大多数人一开始想法都会是splice,这是个很正确也很直观的理解。但是要注意splice是性能消耗很大的操作,如果抽奖池量级一大就会明显影响性能了

2:为什么给list[random]赋值,然后长度减一?
我们需要把中奖的用户剥离出去,然后把数组末尾的用户填进来,最后把整个数组的长度减一,这样下一轮遍历的时候,就是个全新的数组,而且对整个数组的改动是最小的,性能消耗最小

感谢某客邦的僵尸浩《Node.js开发实战》

上一篇:数组去重使用splice方法


下一篇:slice、splice、split 三者的区别