作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我通过打印数组的所有元素来测试代码时,任何一个随机元素总是包含一个未定义的值。
var arr =[];
for(;;){
var randomNum = Math.floor(Math.random()*26);
if(randomNum != 0 && (!arr.includes(randomNum))){
arr.push(randomNum);
}
if(arr.length==25){
break;
}
}
arr.forEach(element => {
console.log(arr[element]);
});
最佳答案
element
是值,您有意将值设置为 1-25。因此,当您将 arr[element]
记录到控制台时,其中之一是 arr[25]
。因为 arr
的长度是 25
,所以这是越界的。您应该记录 element
,而不是 arr[element]
。
var arr =[];
for(;;){
var randomNum = Math.floor(Math.random()*26);
if(randomNum != 0 && (!arr.includes(randomNum))){
arr.push(randomNum);
}
if(arr.length==25){
break;
}
}
arr.forEach(element => {
console.log(element);
});
话虽这么说,但这并不是最好的方法。一遍又一遍地猜测数字直到找到以前从未猜过的数字是非常低效的。更好的方法是随机排列值 1-25 的数组。您可以像这样使用纯 JavaScript 来执行此操作:
var arr = [];
//fill array
for(var i = 1; i < 26; i++) arr.push(i);
//shuffle
for(var i = arr.length - 1; i > 0; i--){
var j = Math.floor(Math.random() * (i + 1));
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//output
arr.forEach(element => console.log(element));
或者,您可以使用 rando.js 在加密安全级别执行此操作像这样:
var arr = randoSequence(1, 25);
arr.forEach(element => console.log(element));
<script src="https://randojs.com/2.0.0.js"></script>
如果你想使用 randojs 代码,不要忘记在你的 html 文档的 head
中包含 script
标签。
关于javascript - 我正在尝试制作一个随机的 schultz 表 (5x5) creator webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699877/
工作 首先我们将生成一个随机数。 然后检查是否已经生成。 如果没有,我们将把它插入数组。 然后我们会将所有数字添加到表中。 问题 当我通过打印数组的所有元素来测试代码时,任何一个随机元素总是包含一个未
我是一名优秀的程序员,十分优秀!