【发布时间】:2020-04-17 15:26:19
【问题描述】:
任务是提示用户输入密码长度和字符类型,然后生成一个随机密码。我认为 for 循环无法正常工作。 retVal 返回为空,因为 for 循环没有传递任何东西。我尝试删除 charAt 函数并让 Math.floor 给我公正和索引,这只是给了我 undefinedundefinedundefinedundefinedundefinedundefined。回到常规的 charAt 函数,我什么也没得到。
//ask for length
var length = prompt("How many characters will your password be? Enter a number between 8 and 128");
//ask for character type
var charType = prompt("Enter a character type: special, numeric, uppercase, lowercase.");
//generate password
function generatePassword() {
//evaluate character type
var charSet = "";
if( charType.toLowerCase === "lowercase" ) {
charSet = "abcdefghijklmnopqrstuvwxyz";
} else if( charType.toLowerCase === "uppercase" ) {
charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
} else if( charType.toLowerCase === "numeric" ) {
charSet = "0123456789";
} else if( charType.toLowerCase === "special" ) {
charSet = " !\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~";
}
//return value
var retVal = "";
//for (var i = 0, n = charSet.length; i < length; i++) {
for (var i = 0, n = length; i < length; i++) {
//picks a character within charSet at index of random number
retVal += charSet.charAt(Math.floor(Math.random() * n));
}
console.log(retVal);
return retVal;
}
【问题讨论】:
-
是否还有一种方法可以获取符合多个条件的答案并生成密码?比如有大写字母和特殊字符的?
-
好吧,如果你有多个字符串,比如 "abc","ABC","1@3$" 你可以做类似 password=abc[2]+ABC[1]+123[ 2] 。这只是一个例子。您可以使用 Math.random 随机化它作为索引。
标签: javascript string random return