Javascript随机名称猜测器:无响应脚本问题
这是我在这里的第一篇文章,我在措辞上有困难,所以请容忍我,因为我已经在这个问题上讨论了几个小时 我的朋友和我想到了一个有趣的小功能,它可以在一定数量的试验中猜测用户名(通过Javascript随机名称猜测器:无响应脚本问题,javascript,Javascript,这是我在这里的第一篇文章,我在措辞上有困难,所以请容忍我,因为我已经在这个问题上讨论了几个小时 我的朋友和我想到了一个有趣的小功能,它可以在一定数量的试验中猜测用户名(通过标记),使用随机数函数从编号为0-25的字母表数组中访问字符串字母。该函数还应该为用户提供猜测其姓名所需的试验次数 我一直得到一个无响应的脚本(第33行-包含第二个“for循环”的行) var-goal=document.getElementById(“您的名字”).value; 变量字母表=[“a”、“b”、“c”、“d”、
标记),使用随机数函数从编号为0-25的字母表数组中访问字符串字母。该函数还应该为用户提供猜测其姓名所需的试验次数
我一直得到一个无响应的脚本(第33行-包含第二个“for循环”的行)
var-goal=document.getElementById(“您的名字”).value;
变量字母表=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
var goalArray=goal.split(“”);
var试验=0;
var guessArray=新数组();
var i;
var n;
对于(i=0;i
任何帮助或试图帮助都将不胜感激
如果有人想知道:我们的这个小想法是通过试验来测试Javascript随机函数的随机性(他在MatLab中编写了相同的程序,所以我们将比较两种语言的随机函数的结果)。这就是我最终使它工作的方式(通过将while循环和second for循环嵌套在另一个for循环中):
var-goal=document.getElementById(“您的名字”).value;
var goalArray=goal.split(“”);
变量字母表=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
var试验=0;
var guessArray=[];
对于(i=0;i
goalArray!=guessArray
始终为真,因为它们是两个独立的数组;即使它们包含相同的元素
因为它们看起来只是a-z中单个字母的数组,所以您可以将它们与
goalArray+'''.=guessArray
之类的东西进行比较,因为toString()
的数组将正确比较。goalArray!=guessArray
始终是正确的,因为它们是两个独立的数组;即使它们包含相同的元素。您需要一种称为深度比较的方法,幸运的是,鉴于您的数组没有非常复杂的结构,它没有那么昂贵。有一些库可以帮助实现这一点,例如lodash
和下划线
@woozyking,或者因为它们似乎只是a-z
中的单个字母数组,您可以将它们与goalArray+'''=guestarray
之类的东西进行比较,因为toString()
的数组将正确比较。@Paulpro你说得对,在这个用例中这是一种更好的技术谢谢各位,我成功了!当我获得特权时,我会给你一个。
var goal = document.getElementById("your_Name").value;
var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var goalArray = goal.split("");
var trials = 0;
var guessArray = new Array();
var i;
var n;
for (i = 0; i < goalArray.length; i++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
while (goalArray != guessArray){
trials++;
guessArray = [];
for (n = 0; n < goalArray.length; n++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
}
document.getElementById("appendomatic").innerHTML = "It took " + guessArray + " trials to guess correctly";
var goal = document.getElementById("your_Name").value;
var goalArray = goal.split("");
var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var trials = 0;
var guessArray = [];
for (i = 0; i < goalArray.length; i++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
for (x = 0; x < goalArray.length; x++){
while (goalArray[x] != guessArray[x]){
trials++;
guessArray = [];
for (n = 0; n < goalArray.length; n++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
}
document.getElementById("appendomatic").innerHTML = "It took " + trials + " trials to guess correctly";
}
}