JS實(shí)現(xiàn)隨機(jī)抽取三人
因?yàn)閷?shí)驗(yàn)室每周需要三人來做報告,所以用JS來做一個隨機(jī)抽取的頁面。
首先,先說一下需求。研二同學(xué)共5人,一人是單獨(dú)的一組,研一同學(xué)共9人,同時九人分為三組。所以共八組,每周報告的三人從八組中抽取,這三人不能有兩人或者兩人以上在同一組。
程序思路1
1.將研一的三組建成三個小的數(shù)組,從這三個數(shù)組里每組隨機(jī)抽取一人;
2. 將第一步里抽取出來的三人和研二的五人放在一起,組成一個新的數(shù)組,在從中隨機(jī)抽取三人;
3. 若隨機(jī)抽取的三人存在上述情況,則返回第一步,重新隨機(jī)抽取,直到不存在第二步的情況,然后輸出;
程序思路2
將實(shí)驗(yàn)室所有人放在一個大的數(shù)組里,先從數(shù)組里隨機(jī)抽取三人;
將研一的三組建成三個小的數(shù)組,把隨機(jī)抽取出來的三人去循環(huán)判斷是否存在兩人或者兩人以上在同一組;
最后實(shí)現(xiàn)
本來以為思路一比較好做,做到后面發(fā)現(xiàn)判斷是否同一組再重新進(jìn)行函數(shù)運(yùn)行,總是出現(xiàn)問題,選出來的三個人通過for循環(huán)去判斷,理論可以但是卻不能實(shí)現(xiàn),還需要我再仔細(xì)想想。思路一程序如下
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=[];
}
}
}
這里面還是存在一些問題,思路二可以正常實(shí)現(xiàn),下面是思路二的程序:
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();
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Sortable.js功能強(qiáng)大的JavaScript 拖拽庫示例詳解
SortableJS 是一個強(qiáng)大、靈活且易于使用的 JavaScript 庫,適用于各種類型的拖放排序需求,這篇文章主要介紹了Sortable.js功能強(qiáng)大的JavaScript 拖拽庫示例詳解,需要的朋友可以參考下2025-01-01
小心!AngularJS結(jié)合RequireJS做文件合并壓縮的那些坑
小心!AngularJS結(jié)合RequireJS做文件合并壓縮的那些坑,大家在做文件合并壓縮的時候一定要注意,感興趣的朋友可以參考一下2016-01-01
JavaScript動態(tài)改變HTML頁面元素例如添加或刪除
HTML頁面元素可以通過js動態(tài)改變,比如可以向HTML中添加元素或刪除某個元素,下面為示例代碼,感興趣的朋友不要錯過2014-08-08
一個用javascript寫的select支持上下鍵、首字母篩選以及回車取值的功能
一個用javascript寫的select支持上下鍵、首字母篩選以及回車取值的功能2009-09-09
基于JS實(shí)現(xiàn)導(dǎo)航條flash導(dǎo)航條
flash導(dǎo)航條在網(wǎng)站建設(shè)中應(yīng)用比較廣泛,此種效果給瀏覽者帶來極好的視覺效果,非常棒,下面小編給大家介紹基于JS實(shí)現(xiàn)導(dǎo)航條flash導(dǎo)航條,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
JavaScript實(shí)現(xiàn)電商平臺商品細(xì)節(jié)圖
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)電商平臺商品細(xì)節(jié)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
微信小程序 獲取手機(jī)號 JavaScript解密示例代碼詳解
這篇文章主要介紹了微信小程序 獲取手機(jī)號 JavaScript解密的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05

