本文共 2914 字,大约阅读时间需要 9 分钟。
// JS模拟排队系统实现 var autoPerson = (function () { var vipNum = 0; var norNum = 0; return function () { var randomNum = Math.random(); if (randomNum > 0.5) { vipNum++; return "V" + vipNum; } else { norNum++; return "N" + norNum; } } })(); var personArr = []; var perLen = 6; for (var i = 0; i < perLen; i++) { vipFirst(autoPerson()); } function vipFirst(person) { if (person[0] == "V") { for (var i = 0; i < personArr.length; i++) { if (personArr[i][0] == "N") { personArr.splice(i, 0, person); return; } } } personArr.push(person); } console.log("现存队列:" + personArr); var timer = setInterval(listMove, 5000); function listMove() { var firstPer = personArr.shift(); console.log("叫号:" + firstPer); var newper = autoPerson(); console.log("新人:" + newper); vipFirst(newper); console.log("现存队形:" + personArr); } 在实际开发中,排队系统是一个非常重要的功能模块。今天我们将分享一个基于JS的模拟排队系统实现,用于模拟不同类型客户的排队处理逻辑。以下是实现的主要思路和代码逻辑。
var autoPerson = (function () { var vipNum = 0; var norNum = 0; return function () { var randomNum = Math.random(); if (randomNum > 0.5) { vipNum++; return "V" + vipNum; } else { norNum++; return "N" + norNum; } }})(); 该函数通过Math.random()随机生成客户类型,VIP客户编号递增,普通客户编号也递增。
var personArr = [];var perLen = 6;for (var i = 0; i < perLen; i++) { vipFirst(autoPerson());} 初始生成perLen个客户,调用vipFirst函数处理队列。
function vipFirst(person) { if (person[0] == "V") { for (var i = 0; i < personArr.length; i++) { if (personArr[i][0] == "N") { personArr.splice(i, 0, person); return; } } } personArr.push(person);} 当新客户是VIP类型时,系统会检查当前队列,找到第一个普通客户位置,将VIP客户插入到其前面。普通客户则直接加入队列末尾。
console.log("现存队列:" + personArr);var timer = setInterval(listMove, 5000);function listMove() { var firstPer = personArr.shift(); console.log("叫号:" + firstPer); var newper = autoPerson(); console.log("新人:" + newper); vipFirst(newper); console.log("现存队形:" + personArr);} 每隔5秒自动调用listMove函数,处理队列,输出日志信息。
以上是JS模拟排队系统的实现逻辑,通过VIP和普通客户的区分处理,模拟了真实场景中的排队流程。该系统能够有效管理客户到达和处理过程,是一个较为完整的模拟实现。
转载地址:http://trqfk.baihongyu.com/