Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript密码生成器-数组中的多个随机值_Javascript_Arrays_Function_Random - Fatal编程技术网

JavaScript密码生成器-数组中的多个随机值

JavaScript密码生成器-数组中的多个随机值,javascript,arrays,function,random,Javascript,Arrays,Function,Random,我是JavaScript的新手,已经和这个相对简单的程序斗争了几天了 程序:我有一个网站,上面有一个按钮。单击该按钮时,将生成(从数组中)并为用户显示密码 问题是:“function generate()”会将生成的单个字符显示10次,而不是10次显示10个不同的字符,这自然会使密码更强大。我希望它将10个不同的字符随机组合成一个密码,而不是同一个字符10次。所以这个程序是有效的,但不是我想要的 我创建了一个JSFIDLE,其中包含用于显示的注释。注意,JSfiddle中禁用了document.

我是JavaScript的新手,已经和这个相对简单的程序斗争了几天了

程序:我有一个网站,上面有一个按钮。单击该按钮时,将生成(从数组中)并为用户显示密码

问题是:“function generate()”会将生成的单个字符显示10次,而不是10次显示10个不同的字符,这自然会使密码更强大。我希望它将10个不同的字符随机组合成一个密码,而不是同一个字符10次。所以这个程序是有效的,但不是我想要的

我创建了一个JSFIDLE,其中包含用于显示的注释。注意,JSfiddle中禁用了document.write,因此结果设置为在控制台中显示


按钮
var arr=[“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”];
randomLetter=arr[Math.floor(arr.length*Math.random())];
函数generate(){for(i=0;i<10;i++){document.write(randomLetter);}
重要:我想了解代码的错误/如何修复它-我不仅仅是在找没有解释的人帮我解决它。如果你想帮我解决这个问题,我非常感谢,但请解释一下你是怎么做的。另外,请不要完全重写代码,就像重写整个程序使其工作一样;我在寻找解决方案/解释,而不是有人把整件事都写出来。如果它是完全错误的,需要完全重写,请简单地用文字解释应该做什么

不过,非常感谢您的帮助


(另外,我知道只有小写字母才能生成密码,但这只是为了实验)

问题是,你不是在重新生成随机元素,而是在
随机字母中缓存随机元素一次,所以它总是一样的。变量的值不会在每次引用时更改。将其放入for循环中,以在每次迭代时重新生成数字:

var arr = ["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"];
function generate () {
  for (i = 0; i < 10; i++) {
    var randomLetter = arr[Math.floor(arr.length * Math.random())];
    document.write(randomLetter); 
  } 
}
var arr=[“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”];
函数生成(){
对于(i=0;i<10;i++){
var randomLetter=arr[Math.floor(arr.length*Math.random())];
文件。写(信);
} 
}

问题在于,您不是在重新生成随机元素,而是在
randomLetter
中缓存一次随机元素,所以它总是一样的。变量的值不会在每次引用时更改。将其放入for循环中,以在每次迭代时重新生成数字:

var arr = ["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"];
function generate () {
  for (i = 0; i < 10; i++) {
    var randomLetter = arr[Math.floor(arr.length * Math.random())];
    document.write(randomLetter); 
  } 
}
var arr=[“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”];
函数生成(){
对于(i=0;i<10;i++){
var randomLetter=arr[Math.floor(arr.length*Math.random())];
文件。写(信);
} 
}

您只设置了一次随机字母,为什么要将其设置为10个不同的随机字母?为此,您需要将其设置在for@juvian谢谢,我一直在努力解决这个问题,例如,将随机字母*10相乘等等,但运气不好。我会尽快把它放进for循环中(不过我暂时还没有准备好)。非常感谢您的回答相关xkcd:P您只设置了一次随机字母,为什么您要将其设置为10个不同的随机字母?为此,您需要将其设置在for@juvian谢谢,我一直在努力解决这个问题,例如,将随机字母*10相乘等等,但运气不好。我会尽快把它放进for循环中(不过我暂时还没有准备好)。非常感谢您的回答相关的xkcd:p感谢您的评论,我将在今天晚些时候尝试这样做(我将暂时离开)。感谢您花时间查看代码。请问您为什么将“randomLetter”更改为“var randomLetter”?把它变成一个变量有什么好处吗?因为我让它只使用“randomLetter=…”而不使用变量。感谢大家的帮助:-@thesystem
var
声明变量。如果没有var,您将隐式地创建一个全局变量,这几乎从来都不好。感谢您的评论,我将在今天晚些时候尝试这样做(我将暂时成为AFK)。感谢您花时间查看代码。请问您为什么将“randomLetter”更改为“var randomLetter”?把它变成一个变量有什么好处吗?因为我让它只使用“randomLetter=…”而不使用变量。感谢大家的帮助:-@thesystem
var
声明变量。如果没有var,您将隐式地创建一个全局变量,这几乎永远不会好。