[英]How can I correctly make a for loop for my variables?
我这里有一个代码,可以获取0到45之间的6个NON重复数字,到目前为止,它的工作原理是,除了我希望循环更改我的数字之外,以便如果数字小于10,则它在前面添加一个0,以便每个数字的格式为“ xx”,例如“ 07”,“ 25”,“ 00”
我正在尝试为我的代码创建一个for循环,但是每次尝试都会中断。 我正在尝试使用此for循环来减少代码长度。
我的代码现在可以正常工作了,但是我有一个讨厌的6 if语句。
我已经尝试过这个:
var z;
for (z = 1; z < 7; z++) {
if (n[z] < 10) {
n[z] = "0" + n[z];
}
}
这是我的代码:
function randomNo(){ function arrayShuffle () { var i = this.length, j, temp; if ( i === 0 ) return false; while ( --i ) { j = Math.floor( Math.random() * ( i + 1 ) ); temp = this[i]; this[i] = this[j]; this[j] = temp; } } Array.prototype.shuffle =arrayShuffle; var start = 0; var end = 45; var numbers = new Array(); for (var i = start; i <= end; i++) { numbers.push(i); } numbers.shuffle(); var n1 = numbers.pop(); var n2 = numbers.pop(); var n3 = numbers.pop(); var n4 = numbers.pop(); var n5 = numbers.pop(); var n6 = numbers.pop(); // Should replace for a for loop, but I cant figure it out // Replace in html console.log(n1); console.log(n2); console.log(n3); console.log(n4); console.log(n5); console.log(n6); } randomNo();
每次尝试for循环时,我的数字都将停止工作,而在HTML中,我只会得到开始文本,等待查询选择器替换。
将数字转换为字符串,然后:
1)使用padStart
方法的字符串:
function ex(inp) { return inp.toString().padStart(2, '0'); } console.log(ex(1)); console.log(ex(154)); console.log(ex(9));
2)检查字符串的长度,如果小于2,则添加前导0:
function ex(numb) { return numb.toString().length < 2 ? `0${numb}` : numb; } console.log(ex(1)); console.log(ex(154)); console.log(ex(13)); console.log(ex(9));
在填充时间执行此操作:
for (var i = start; i <= end; i++) {
numbers.push((i < 10 ? "0" : "") + i); // This will generate "08", "09", "10"
}
但是,如果您只想要6个随机数在0到45之间的数组,则可以生成6个空(未定义)元素的数组,这些元素循环并用0〜45的随机数填充:
let numbers = Array.from(Array(6)).map(() => { let n = Math.floor(Math.random()*46); return (n < 10 ? "0" : "") + n }) console.log(numbers)
...然后您可以循环:
for(let num in numbers){
document.querySelector(`.rn${num}`).innerText = num;
}
我建议使用map()
function arrayShuffle () { var i = this.length, j, temp; if ( i === 0 ) return false; while ( --i ) { j = Math.floor( Math.random() * ( i + 1 ) ); temp = this[i]; this[i] = this[j]; this[j] = temp; } } Array.prototype.shuffle =arrayShuffle; var start = 0; var end = 45; var numbers = new Array(); for (var i = start; i <= end; i++) { numbers.push(i); } numbers.shuffle(); numbers = numbers.map(function (n) { return n < 10 ? "0" + n : n.toString(); }); console.log(numbers);
如果只想将6个随机的'int.toString'2位数字值放入6个具有相同前缀名称和0到46之间的数字的JS变量中,则无需创建包装器或Array:
var randomIntStr = { _list : [], GetNoRepeat(max) { let r = 0; do { r = Math.floor(Math.random() * Math.floor(max)); } while (this._list.includes(r)); this._list.push(r); return r < 10 ? "0" + r : r.toString(); } }; for (let i=1; i<7;i++) { window['n'+i] = randomIntStr.GetNoRepeat(46); } console.log('n1 =', n1); console.log('n2 =', n2); console.log('n3 =', n3); console.log('n4 =', n4); console.log('n5 =', n5); console.log('n6 =', n6);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.