JS实现随机抽取三人


Posted in Javascript onNovember 06, 2019

因为实验室每周需要三人来做报告,所以用JS来做一个随机抽取的页面。

首先,先说一下需求。研二同学共5人,一人是单独的一组,研一同学共9人,同时九人分为三组。所以共八组,每周报告的三人从八组中抽取,这三人不能有两人或者两人以上在同一组。

程序思路1

1.将研一的三组建成三个小的数组,从这三个数组里每组随机抽取一人;
2. 将第一步里抽取出来的三人和研二的五人放在一起,组成一个新的数组,在从中随机抽取三人;
3. 若随机抽取的三人存在上述情况,则返回第一步,重新随机抽取,直到不存在第二步的情况,然后输出;

程序思路2

将实验室所有人放在一个大的数组里,先从数组里随机抽取三人;
将研一的三组建成三个小的数组,把随机抽取出来的三人去循环判断是否存在两人或者两人以上在同一组;

最后实现

本来以为思路一比较好做,做到后面发现判断是否同一组再重新进行函数运行,总是出现问题,选出来的三个人通过for循环去判断,理论可以但是却不能实现,还需要我再仔细想想。思路一程序如下

for (var i=0;i<3;i++) {
  index1 = Math.round(Math.random()*(array.length-1));
  value = array[index1];

  newarray.push(value);
  array.splice(index1,1);

  value ='';
 }
 console.log(newarray);

 for (var j =0;j<newarray.length;j++) {
  for (var m = 0; m < arr1.length; m++) {
   if (newarray[j] === arr1[m]){
    num1++;
   }
  }
  for (var n = 0; n < arr2.length; n++) {
   if (newarray[j] === arr2[n]){
    num2++;
   }
  }
  for (var o = 0; o < arr3.length; o++) {
   if (newarray[j] === arr3[o]){
    num3++;
   }
  }
 }
 btn.onclick = function (){


 var id = setInterval(frame,500);
 function frame() {
  if (!flag) {
   clearInterval(id);
   flag=true;
  } else {
   Begin();
   document.getElementById("name").innerHTML="";
   for (var i = 0; i < newarray.length; i++) {
    document.getElementById("name").innerHTML += newarray[i] + "</br> ";

   }
   flag=false;
   newarray=[];
  }
 }

}

这里面还是存在一些问题,思路二可以正常实现,下面是思路二的程序:

function Begin() {
  num1 = Math.round(Math.random() * (arr4.length - 1));
  num2 = Math.round(Math.random() * (arr4.length - 1));
  num3 = Math.round(Math.random() * (arr4.length - 1));
  Begin2();
 }

 function Begin2() {
  var array = [];
  var arrayLast = [];
  if (num1 !== num2 && num1 !== num3 && num2 !== num3) {
   array.push(num1);
   array.push(num2);
   array.push(num3);
   for (var i = 0; i < array.length; i++) {
    if (typeof arr4[array[i]] === "string") {
     arrayLast.push(arr4[array[i]]);
    } else {
     var num4 = Math.round(Math.random() * (arr4[array[i]].length - 1));
     arrayLast.push(arr4[array[i]][num4]);
    }
   }
  } else {
   Begin();
  }

  console.log(arrayLast);
  document.getElementById("name").innerHTML="";
  for (var i = 0; i < arrayLast.length; i++) {
   document.getElementById("name").innerHTML += arrayLast[i] + "</br> ";
  }
 }

 btn.onclick = function () {
  Begin();

 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
Sep 24 Javascript
BootStrop前端框架入门教程详解
Dec 25 Javascript
浅谈React + Webpack 构建打包优化
Jan 23 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
JavaScript实现网页计算器功能
Oct 29 Javascript
Node对CommonJS的模块规范
Nov 06 #Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 #Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 #Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 #Javascript
js+html实现点名系统功能
Nov 05 #Javascript
vuex 实现getter值赋值给vue组件里的data示例
Nov 05 #Javascript
在Vue mounted方法中使用data变量详解
Nov 05 #Javascript
You might like
我的论坛源代码(九)
2006/10/09 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
Js的MessageBox
2006/12/03 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
python实现哈希表
2014/02/07 Python
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
四风问题查摆材料
2014/08/25 职场文书
竞选学委演讲稿
2014/09/13 职场文书
党员个人剖析材料
2014/09/30 职场文书
教师批评与自我批评
2014/10/15 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android