需求
从数组中随机挑选中奖成员
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--
}
说明
1:为什么不选择用splice?
大多数人一开始想法都会是splice,这是个很正确也很直观的理解。但是要注意splice是性能消耗很大的操作,如果抽奖池量级一大就会明显影响性能了
2:为什么给list[random]赋值,然后长度减一?
我们需要把中奖的用户剥离出去,然后把数组末尾的用户填进来,最后把整个数组的长度减一,这样下一轮遍历的时候,就是个全新的数组,而且对整个数组的改动是最小的,性能消耗最小
感谢某客邦的僵尸浩《Node.js开发实战》