利用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 ...
随机推荐
- oracle解决导入高版本dmp报错问题:IMP-00058: ORACLE error 12547 encountered
低版本oracle导入高版本的dmp时,导过的人都应该清楚,直接导入是会报错的,报错信息如下,其实解决这个问题很简单, 只要修改一下dmp内的版本号就可以了. 修改版本不能随便使用文本工具打开,否知会 ...
- pycharm 激活方法
方法一: 服务器激活 pycharm 安装: https://www.cnblogs.com/pyyu/articles/9210171.html 方法二: 密钥激活 pycharm 获取激活码 (密 ...
- 使用Eclipse来操作HDFS的文件
一.常用类 1.Configuration Hadoop配置文件的管理类,该类的对象封装了客户端或者服务器的配置(配置集群时,所有的xml文件根节点都是configuration) 创建一个Confi ...
- Python博客目录
python基础 1.helloworld 2.运算符&while循环 3.pycharm安装&for循环&format字符串&list列表&set集合使用 4 ...
- react创建项目很慢,最后提示fetch failed的解决方法
$ cnpm install -g create-react-app //创建react全局变量 $ create-react-app my-app //创建一个react项目 国内使用 npm 速度 ...
- python range的用法小题
题目(1)for i in range(10): print(i) 结果:123456789 题目(2) for lst in range(100): if lst % 7 == 0 and str( ...
- Parco_Love_String
二维的kmp直接搞出来emmm, 后缀自动机都没这个快(本弱鸡不会后缀自动机) #include <bits/stdc++.h> using namespace std; #define ...
- 牛客(web 1)
bootstrap(Web框架) 有关换行的知识: http://www.cnblogs.com/wqsbk/p/3493948.html 关于link加载问题: link是同时加载的,script标 ...
- Oracle安装和配置Oracle数据库快速指南
Oracle安装12C要求参考文档 汇总 中文版:在 Unix AIX,HP-UX,Linux,Solaris 和 MS Windows 操作系统上安装和配置 Oracle 数据库(RDBMS)的要求 ...
- html-webpack-plugin插件使用
项目使用hightopo框架,使用webpack打包.这里的场景是:点击预览按钮,页面会打开一个新页面. 但是由于使用了webpack打包,所以直接使用以下代码是不行的.报404 window.ope ...