题解 | #双色球机选一注#
双色球机选一注
http://www.nowcoder.com/practice/4d712994d0364a159f8169b7b0e74d04
//注意 不能用es6语法
randomFn();
function randomFn() {
//红球节点及所有红球
const redBallRoot = document.querySelector('.red .balls-wp');
const redBallList = redBallRoot.children;
//蓝球节点及所有红球
const blueBallRoot = document.querySelector('.blue .balls-wp');
const blueBallList = blueBallRoot.children;
let redNumList =[];
let blueNumList=[];
//红球蓝球数字格式化
for(var indx=0;indx<33;indx++){
redNumList.push(indx+1<10?`0${indx+1}`:`${indx+1}`)
}
for(var indx=0;indx<16;indx++){
blueNumList.push(indx+1<10?`0${indx+1}`:`${indx+1}`)
}
//生成不重复的随机数
function getRandomNums(num,list){
//随机球数组
const rsltList=[];
for(var i=0;i<num;i++){
//随机生成一枚球
const getNumber=()=>{
const getRslt = parseInt(Math.random()*list.length);
if(list[getRslt]&&rsltList.indexOf(list[getRslt])===-1){
//随机球若不存在则插入随机球数组里
return rsltList.push(list[getRslt]);
}
//若存在则继续递归,直到随机球不存在
else return getNumber();
return;
}
getNumber();
}
return rsltList;
}
//红蓝随机球数组 大小排序
const headReds = getRandomNums(6,redNumList).sort((a,b)=>parseInt(a)-parseInt(b));
const headBlues = getRandomNums(1,blueNumList.sort((a,b)=>parseInt(a)-parseInt(b)));
//最终红蓝球数组
const rsltListRed = headReds.concat(redNumList.filter(e=>headReds.indexOf(e)===-1));
const rsltListBlue = headBlues.concat(blueNumList.filter(e=>headBlues.indexOf(e)===-1));
//便利最终数组进行dom操作,修改节点内容 以及 添加active class
for(var i=0;i<rsltListRed.length;i++){
redBallList[i].innerText=rsltListRed[i];
if(i<6)redBallList[i].classList.add('active');
}
for(var i=0;i<rsltListBlue.length;i++){
blueBallList[i].innerText=rsltListBlue[i];
if(i<1)blueBallList[i].classList.add('active');
}
// 06,10,13,18,23,27|05
//返回字符串拼接
const rsltString = headReds.join(',')+'|'+headBlues.join('');
//return `${headReds.join(',')}|${headBlues.join('')}` es6不让用。。
return rsltString}
360集团公司氛围 420人发布
