gpt4 book ai didi

javascript - 我正在尝试制作一个随机的 schultz 表 (5x5) creator webapp

转载 作者:行者123 更新时间:2023-12-01 17:16:09 25 4
gpt4 key购买 nike

工作

  1. 首先我们将生成一个随机数。
  2. 然后检查是否已经生成。
  3. 如果没有,我们将把它插入数组。
  4. 然后我们会将所有数字添加到表中。

问题

当我通过打印数组的所有元素来测试代码时,任何一个随机元素总是包含一个未定义的值。

代码

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com