我正在为一个类开发一个随机密码生成器,它几乎已经被计算出来了,但是它不是随机返回密码,而是返回orderly...("abcdefghijklmnopqrstuvwxyz12343..")从其他人的错误来看,我猜是在我的随机变量中。
如有任何帮助,将不胜感激!)
var generateBtn = document.querySelector("#generate");
function getPass() {
var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var upperArray = upperCase.split("");
var lowerCase = "abcdefghijklmnopqrstuvwxyz";
var lowerArray = lowerCase.split("");
var num = "0123456789";
var numArray = num.split("")
var specials = "!@#$%^&*()_+?<>";
var specialsArray = specials.split("");
allCharacters = [];
password = "";
var length = prompt("How many characters would you like your password to be? Min-8 Max-128");
if (length < 8 || length > 128) {
alert("Password must be between defined range.");
getPass()
}
if (confirm("Do you want uppercase letters?")) {
allCharacters.push(upperArray);
}
if (confirm("Do you want lowercase letters?")){
allCharacters.push(lowerArray);
}
if (confirm("Do you want numbers?")){
allCharacters.push(numArray);
}
if (confirm("Do you want special characters ie. !, @, #, $, ?")){
allCharacters.push(specialsArray);
}
for (var i = 0; i < length; i++){
var random = Math.floor(Math.random() * Math.floor(allCharacters.length));
password += allCharacters[random];
}
return password;
}
generateBtn.addEventListener("click", putPass);**strong text**
function putPass() {
var password = getPass();
var passwordText = document.querySelector("#password");
passwordText.value = password;
}发布于 2022-09-18 19:10:43
把你所有的
allCharacters.push(upperArray);使用
allCharacters = allCharacters.concat(upperArray);(类似于其他群体)
方法的问题在于将数组放入allCharacters数组中,而不是将这些数组的内容放入该数组中。而且,即使选择了每个组,而不是多个不同的字符,候选数组也只包含4个其他数组,然后从其中进行选择。
注意,您的代码中仍然存在一个问题,如果没有选择组,那么密码就不会正确生成。你可以让其中一个组不是可选的。
function getPass() {
var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var upperArray = upperCase.split("");
var lowerCase = "abcdefghijklmnopqrstuvwxyz";
var lowerArray = lowerCase.split("");
var num = "0123456789";
var numArray = num.split("")
var specials = "!@#$%^&*()_+?<>";
var specialsArray = specials.split("");
allCharacters = [];
password = "";
var length = prompt("How many characters would you like your password to be? Min-8 Max-128");
if (length < 8 || length > 128) {
alert("Password must be between defined range.");
getPass()
}
if (confirm("Do you want uppercase letters?")) {
allCharacters = allCharacters.concat(upperArray);
}
if (confirm("Do you want lowercase letters?")){
allCharacters = allCharacters.concat(lowerArray);
}
if (confirm("Do you want numbers?")){
allCharacters = allCharacters.concat(numArray);
}
if (confirm("Do you want special characters ie. !, @, #, $, ?")){
allCharacters = allCharacters.concat(specialsArray);
}
for (var i = 0; i < length; i++){
var random = Math.floor(Math.random() * Math.floor(allCharacters.length));
password += allCharacters[random];
}
return password;
}
window.alert( `The random password is ${getPass()}` );
发布于 2022-09-18 19:14:09
allCharacters.push(specialsArray)不像你想的那样工作
您只需将整个数组推入现有的数组中。
const a = [1, 2, 3]
const b = [4, 5, 6]
a.push(b)
console.log(a)
但是你想把这些东西推过去:
const a = [1, 2, 3]
const b = [4, 5, 6]
a.push(...b)
console.log(a)
整个代码:
var generateBtn = document.querySelector("#generate");
function getPass() {
var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var upperArray = upperCase.split("");
var lowerCase = "abcdefghijklmnopqrstuvwxyz";
var lowerArray = lowerCase.split("");
var num = "0123456789";
var numArray = num.split("")
var specials = "!@#$%^&*()_+?<>";
var specialsArray = specials.split("");
allCharacters = [];
password = "";
var length = prompt("How many characters would you like your password to be? Min-8 Max-128");
if (length < 8 || length > 128) {
alert("Password must be between defined range.");
getPass()
}
if (confirm("Do you want uppercase letters?")) {
allCharacters.push(...upperArray);
}
if (confirm("Do you want lowercase letters?")) {
allCharacters.push(...lowerArray);
}
if (confirm("Do you want numbers?")) {
allCharacters.push(...numArray);
}
if (confirm("Do you want special characters ie. !, @, #, $, ?")) {
allCharacters.push(...specialsArray);
}
for (var i = 0; i < length; i++) {
var random = Math.floor(Math.random() * Math.floor(allCharacters.length));
password += allCharacters[random];
}
return password;
}
generateBtn.addEventListener("click", putPass);
function putPass() {
var password = getPass();
console.log(password)
var passwordText = document.querySelector("#password");
passwordText.value = password;
}<button id="generate">generate</button>
<p id="password"></p>
附注:
请注意,您的代码在密码方面不安全,不应该用于生成真正的密码。
发布于 2022-09-18 20:36:41
我使用以下方法推送整个数组:
allCharacters.push(upperArray);而不是
allCharacters.push(...upperArray);https://stackoverflow.com/questions/73765662
复制相似问题