我爱撸码,撸码使我感到快乐!
大家好,我是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模拟排队系统的更多相关文章

  1. 利用qemu模拟嵌入式系统制作全过程

    http://www.tinylab.org/using-qemu-simulation-inserts-the-type-system-to-produce-the-whole-process/ 利 ...

  2. 利用js模拟用户的cookie信息保存

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814761849708347907/ 默认已完成爬虫文档<爬虫学习文档顺序> 并简单搭建完展示页面和管 ...

  3. matlab实现M/M/1排队系统

    Matlab实现. 分为主函数 MyLine 和被调用函数 Func. 主函数 MyLine 实现在 Func 函数的基础上实现序贯法, 将平均等待队长作为每次模拟的 X,求出置信区间.Func 函数 ...

  4. 原生js+css实现重力模拟弹跳系统的登录页面

    今天小颖把之前保存的js特效视频看了一遍,跟着视频敲了敲嘻嘻,用原生js实现一个炫酷的登录页面.怎么个炫酷法呢,看看下面的图片大家就知道啦. 效果图: 不过在看代码之前呢,大家先和小颖看看css中的o ...

  5. 原生JS实现队结构及利用队列模拟‘击鼓传花’游戏

    1. 前言 队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合.队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾. 2.功能说明 enqu ...

  6. 利用phantomjs模拟QQ自动登录

    之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...

  7. js 模拟java 中 的map

    //js模拟map Map = { obj : {}, put : function(key , value){ this.obj[key] = value; }, get : function(ke ...

  8. nodejs爬虫笔记(五)---利用nightmare模拟点击下一页

    目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...

  9. 忘记秘密利用python模拟登录暴力破解秘密

    忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...

随机推荐

  1. 剑指offer-机器人的运动范围

    题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能 ...

  2. 阿里云RDS数据库改造迁移方案

    1. 改造原因 (1) 由于历史原因, 本应该是同一个库的表分布在两个数据库中,需要对这两个库进行合并. (2) 已有的数据库性能无法满足业务的增长需要, 查询卡,慢问题突出. (3) 当前自建Mys ...

  3. Scala中foldLeft的总结

    源码分析 def seq: TraversableOnce[A] 上面两段代码是scala.collection.TraversableOnce特质的foldLeft方法源代码,实现了Traversa ...

  4. JAVA获取汉字拼音首字母

    package com.common.util; import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Titl ...

  5. crypto 简单了解

    阅读前:文章记录crypto库的简单了解,和一些简单的用法,与具体加解密算法的实现无关. 文中例子使用到了node的crypto模块 和  npm sjcl(Stanford Javascript C ...

  6. django js引入失效问题

    今天将项目中html文件下的自定义scrept代码单独独立,结果js引入无效,没有任何时间效果,在浏览器查看引入文件也正常. 后来发现自己引入的位置不对,js的引入文件应该放在body体内,而我把他们 ...

  7. mat-form-field must contain a MatFormFieldControl错误的解决方法

    下面的代码竟然出错了: <mat-form-field> <input matInput placeholder="输入名称"> </mat-form ...

  8. 第九届蓝桥杯C/C++B组省赛感想

    因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...

  9. Emmet:HTML/CSS代码快速编写神器教程

    Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...

  10. work-7.2

    安装ubuntu,jdk ,git,maven,Intellij. 配置GIT时,需要将在本地生成的公钥粘贴到服务端. 先占个座,具体过程待补充. -------------------------- ...