code2021-l
Version:
前端自定义工具
43 lines (41 loc) • 1.34 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>队列_应用</title>
</head>
<body>
<script src="../../../node_modules/atguigu-utils/dist/atguigu-utils.js"></script>
<script src="../../../dist/190719-utils.js"></script>
<script>
/*
利用自定义队列实现击鼓传花游戏函数
*/
function passGame(names, number) {
// 创建一个空的queue
const queue = new aUtils.Queue()
// 将数组中所有元素(name和index)依次放入queue
names.forEach((name, index) => {
queue.enqueue({name, index})
});
// 只队列的size大于1
while(queue.size()>1) {
// 将队列的前number-1元素依次转移到队列的最后
for (let index = 0; index < number-1; index++) {
queue.enqueue(queue.dequeue())
}
// 删除队头的元素
queue.dequeue()
}
// 最后剩下的那个就是目标
const {name, index} = queue.front()
alert(`胜利的人是${name}, 他是第${index + 1}个人`)
}
// 测试
var names = ['A','B','C','D','E']
passGame(names, 4)
</script>
</body>
</html>