利用JS模拟排队系统
我爱撸码,撸码使我感到快乐!
大家好,我是Counter。
今天给大家分享的是js模拟排队系统,刚开始有排队序列,序列里有vip用户和普通用户,vip用户永远位于普通用户的前面,只有当当前vip用户都办理好手续,才会叫号普通用户,每5秒产生一个随机客户。
效果如图:

// 函数的闭包,立即执行
var autoPerson = (function () {
// 定义vip用户和普通用户
var vipNum = 0;
var norNum = 0;
return function () {
// 随机产生vip或者普通用户
var randomNum = Math.random();
if ( randomNum > 0.5) {
vipNum++;
return "V" + vipNum;
}
else {
norNum++;
return "N" + norNum;
}
}
})();
// 定义一个排队数组,长度为6
var personArr = [];
var perLen = 6;
for( var i = 0; i < perLen; i++) {
// 每循环一次掉用函数vipFirst函数一次,传入参数,随机产生vip或者普通用户
vipFirst(autoPerson());
}
// 对数组进行整合,如果当前传入的客户是VIP的话
function vipFirst(person) {
if ( person[0] == "V") {
// 那么遍历现存的数组
for( var i = 0; i < personArr.length; i++) {
// 并且找出数组里普通用户所在的位置
if ( personArr[i][0] == "N") {
// splice数组方法,找到当前位置上的普通用户,0代表不删除,并在这个普通用户之前插入这位vip用户
personArr.splice(i, 0, person);
// 注意这边插入后,需返回,否则可能引起无限循环,重复插入,导致浏览器奔溃
return;
}
}
}
// 如果当前的用户不是VIP用户的话,那么就按普通先到的用户排列
personArr.push(person);
}
// 打印当前队列
console.log("现存队列:" + personArr);
// 设置一个计时器,每5秒执行一次
var timer = setInterval(listMove, 5000); function listMove() {
// 删除数组第一位,并将这个值返回给firstPer
var firstPer = personArr.shift();
// 打印出来当前叫号的客户
console.log("叫号:" + firstPer); // 随机再来一个用户
var newper = autoPerson();
// 打印当前新来的客户编号
console.log("新人:" + newper);
// 将新来的客户如果是vip用户,就插入到普通用户前
vipFirst(newper);
// 再次打印当前的队列
console.log("现存队形:" + personArr);
}
利用JS模拟排队系统的更多相关文章
- 利用qemu模拟嵌入式系统制作全过程
http://www.tinylab.org/using-qemu-simulation-inserts-the-type-system-to-produce-the-whole-process/ 利 ...
- 利用js模拟用户的cookie信息保存
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814761849708347907/ 默认已完成爬虫文档<爬虫学习文档顺序> 并简单搭建完展示页面和管 ...
- matlab实现M/M/1排队系统
Matlab实现. 分为主函数 MyLine 和被调用函数 Func. 主函数 MyLine 实现在 Func 函数的基础上实现序贯法, 将平均等待队长作为每次模拟的 X,求出置信区间.Func 函数 ...
- 原生js+css实现重力模拟弹跳系统的登录页面
今天小颖把之前保存的js特效视频看了一遍,跟着视频敲了敲嘻嘻,用原生js实现一个炫酷的登录页面.怎么个炫酷法呢,看看下面的图片大家就知道啦. 效果图: 不过在看代码之前呢,大家先和小颖看看css中的o ...
- 原生JS实现队结构及利用队列模拟‘击鼓传花’游戏
1. 前言 队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合.队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾. 2.功能说明 enqu ...
- 利用phantomjs模拟QQ自动登录
之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...
- js 模拟java 中 的map
//js模拟map Map = { obj : {}, put : function(key , value){ this.obj[key] = value; }, get : function(ke ...
- nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...
- 忘记秘密利用python模拟登录暴力破解秘密
忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...
随机推荐
- Windows10 ntoskrnl.exe占用大量的磁盘空间(100%)
一.解决办法: 1.此电脑(右键)> 管理(点击)> 系统工具 > 任务计划程序 > 任务计划程序库 > Microsoft > windows > .NE ...
- Linux(CentOs 7)系统重装笔记(二)---完全删除用户账号和root用户登录
参考网址:https://jingyan.baidu.com/article/046a7b3ede1c38f9c27fa91b.html 一.完全删除用户 1.查看要删除的用户账号信息 find / ...
- linux /proc/sys/vm/中各个文件含义
1) /proc/sys/vm/block_dump该文件表示是否打开Block Debug模式,用于记录所有的读写及Dirty Block写回动作. 缺省设置:0,禁用Block Debu ...
- 发现了一个比较有意思的url参数
今天登录阿里云发现需要二次验证了,手机号不是我的很麻烦,然后就看到有个手机app快捷登录的方式,点进去一看,链接地址是这样的http://qd.alibaba.com/onekey.htm?spm=0 ...
- JavaScript实现预览本地上传图片
<html> <head> <title> www.jb51.net图片上传预览 </title> <script> function Pr ...
- vs2017无法安装
vs2017无法安装,无错误提示和日志 参考:https://blog.csdn.net/jq0123/article/details/83987686 但是解决方法不一样,运行安装程序没有提示,需要 ...
- java中使用JDBC的preparedStatement批处理数据的添加
在项目中我们偶尔可能会遇到批量向数据库中导入数据,如果批处理的情况较多的情况下可以使用spring batch,如果只是一个导入功能的话可以考虑使用jdbc的preparedStatement处理. ...
- 【HBase】-NO.140.HBase.1 -【HBase】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- Adaboost总结
一.简介 Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类.为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到 ...
- Oracle 10.2.0.5升级至11.2.0.4
参照MOS 官方文档Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)一.升 ...