Javascript 传递一个对象方法并在函数外部调用这些方法。随机密码发生器

Javascript 传递一个对象方法并在函数外部调用这些方法。随机密码发生器,javascript,arrays,object,Javascript,Arrays,Object,新的javascript有一个密码生成器项目 我正在尝试访问generatePasswordInfo函数外部的passwordInfo对象。 我想传递passwordLength,以便为请求的密码长度生成一个随机字符 我通过getpasswordLength变量捕获密码长度,并将其存储在passwordInfo中。我想这就是我在passwordInfo中返回值时遇到的问题 我使用包含passwordInfo的generatePasswordInfo函数并将其存储在变量passwordInclud

新的javascript有一个密码生成器项目

我正在尝试访问generatePasswordInfo函数外部的passwordInfo对象。 我想传递passwordLength,以便为请求的密码长度生成一个随机字符

我通过getpasswordLength变量捕获密码长度,并将其存储在passwordInfo中。我想这就是我在passwordInfo中返回值时遇到的问题

我使用包含passwordInfo的generatePasswordInfo函数并将其存储在变量passwordIncludes中。然后迭代passwordIncludes的长度以获取每个索引的随机字符。然后将其推送到空数组createdPassword

// numbers array
var numbersChar = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
//lowercase array
var lowerCaseChar = [
  "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"
];
//uppcase array
var upperCaseChar = [
  "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"
];
// special char array
var specialChar = [
  "@",  "%",  "+",  "\\",  "/",  "'",  "!",  "#",  "$",  "^",  "?",  ":",  ",",  ")",  "(",  "}",  "{",  "]",  "[",  "~",  "-",  "_",  "."
];

// Assignment code here
function generatePasswordInfo() {
  var getPasswordLength = parseInt(prompt("Choose number of characters for your password."));
  if(getPasswordLength < 8 ) {
    alert("A minimum number of 8 characters requried.");
    generatePassword();
  }
  if(getPasswordLength > 128 ) {
    alert("A Maximum number of 128 characters requried.");
    generatePassword();
  }
  if (isNaN(getPasswordLength)) {
    alert("Invalid input. Please insert a number.");
    generatePassword();
  }
  
  //Confirm including lowercase letters
  var includeLowerCase = window.confirm("Click Ok to include lowercase characters");


  //Confirm including uppercase letter
  var includeUpperCase = window.confirm("click Ok to include uppercase characters");


  //Confirm including numbers
  var includeNumbers = window.confirm("click Ok to include numbers");


  //Confirm including special characters
  var includespecial = window.confirm("click Ok to include special characters");


  if (!includeLowerCase && !includeUpperCase && !includeNumbers && !includespecial) {
    alert("Minimum of 1 character type needed.");
    return;
  }
  
 //stores password Info in object
var passwordInfo = {
  passwordLength: getPasswordLength,
  includeLowerCase: includeLowerCase,
  includeUpperCase: includeUpperCase,
  includeNumbers: includeNumbers,
  includespecial: includespecial
};

return passwordInfo; 
}

// Get a random character from an array
function getRandomChar(arr) {
  var randomChar = Math.floor(Math.random() * arr.length);
  var selectedChar = arr[randomChar];

  return selectedChar;
}


function generatePassword() {
  
  // passwordInfo object
  var passwordIncludes = generatePasswordInfo();
 
  //store created password
  var createdPassword = [];

  // Array to store types of characters to include in password
  var availableCharacters = [];

  // adds array of lower characters to array of available characters
  if(passwordIncludes.includeLowerCase) {
    availableCharacters = availableCharacters.concat(lowerCaseChar);
  }

  // adds array of upper characters to array of available characters
  if(passwordIncludes.includeUpperCase) {
    availableCharacters = availableCharacters.concat(upperCaseChar);
  }

  // adds array of numbers to array of available characters
  if(passwordIncludes.includeNumbers) {
    availableCharacters = availableCharacters.concat(numbersChar);
  }

  // adds array of special characters to array of available characters
  if(passwordIncludes.includespecial) {
    availableCharacters = availableCharacters.concat(specialChar);
  }

  // Iterate through the password length, get random index from the array of available characters
  for (var i = 0; i < passwordIncludes.length; i++) {
    availableCharacters = getRandomChar(availableCharacters);

    // add characters to password array
    createdPassword.push(availableCharacters);
  }
  
  return createdPassword.join("");
  

}


// Get references to the #generate element
var generateBtn = document.querySelector("#generate");

// Write password to the #password input
function writePassword() {
  var password = generatePassword();
  var passwordText = document.querySelector("#password");

  passwordText.value = password;

}

// Add event listener to generate button
generateBtn.addEventListener("click", writePassword);
//数字数组
变量numbersChar=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”];
//小写数组
var lowerCaseChar=[
“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”
];
//uppcase阵列
var upperCaseChar=[
“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”
];
//特殊字符数组
变量specialChar=[
"@",  "%",  "+",  "\\",  "/",  "'",  "!",  "#",  "$",  "^",  "?",  ":",  ",",  ")",  "(",  "}",  "{",  "]",  "[",  "~",  "-",  "_",  "."
];
//分配代码在这里
函数generatePasswordInfo(){
var getPasswordLength=parseInt(提示(“为密码选择字符数”);
if(getPasswordLength<8){
警报(“要求最少8个字符”);
generatePassword();
}
如果(getPasswordLength>128){
警报(“要求的最大字符数为128”);
generatePassword();
}
if(isNaN(getPasswordLength)){
警报(“无效输入。请插入数字”);
generatePassword();
}
//确认包括小写字母
var includeLowerCase=window.confirm(“单击确定以包含小写字符”);
//确认包括大写字母
var includeUpperCase=window.confirm(“单击确定以包含大写字符”);
//确认包括数字
var includeNumbers=窗口。确认(“单击确定以包含数字”);
//确认包含特殊字符
var includespecial=window.confirm(“单击确定以包含特殊字符”);
如果(!includeLowerCase&&!includeUpperCase&&!includeNumber&&!includespecial){
警报(“至少需要1个字符类型”);
返回;
}
//在对象中存储密码信息
var passwordInfo={
passwordLength:getPasswordLength,
includeLowerCase:includeLowerCase,
includeUpperCase:includeUpperCase,
IncludeNumber:IncludeNumber,
includespecial:includespecial
};
返回密码信息;
}
//从数组中获取随机字符
函数getRandomChar(arr){
var randomChar=Math.floor(Math.random()*arr.length);
var selectedChar=arr[randomChar];
返回selectedChar;
}
函数generatePassword(){
//passwordInfo对象
var passwordIncludes=generatePasswordInfo();
//存储创建的密码
var createdPassword=[];
//用于存储要包含在密码中的字符类型的数组
var availableCharacters=[];
//将低位字符数组添加到可用字符数组中
if(密码includes.includeLowerCase){
availableCharacters=availableCharacters.concat(小写字母);
}
//将上限字符数组添加到可用字符数组中
if(passwordIncludes.includeUpperCase){
availableCharacters=availableCharacters.concat(大写字符);
}
//将数字数组添加到可用字符数组中
if(密码includes.includeNumber){
availableCharacters=availableCharacters.concat(numberChar);
}
//将特殊字符数组添加到可用字符数组中
if(密码includes.includespecial){
availableCharacters=availableCharacters.concat(specialChar);
}
//遍历密码长度,从可用字符数组中获取随机索引
for(var i=0;i
这是一个JSFIDLE
您的代码有两个问题

  • 当循环为(var i=0;i生成正确数量的字符时,应该说为(var i=0;i
  • 您正在使用
    availableCharacters=getRandomChar(availableCharacters);
    重新定义可用字符,使其类似于
    var c=getRandomChar(availableCharacters)
    并将
    c
    连接到生成的密码中
  • //数字数组
    变量numbersChar=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”];
    //小写数组
    var lowerCaseChar=[
    “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”
    ];
    //uppcase阵列
    var upperCaseChar=[
    “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”
    ];
    //特殊字符数组
    变量specialChar=[
    "@",  "%",  "+",  "\\",  "/",  "'",  "!",  "#",  "$",  "^",  "?",  ":",  ",",  ")",  "(",  "}",  "{",
    
    passwordIncludes.passwordLength
    
    passwordIncludes.length
    
    for (var i = 0; i < passwordIncludes.length; i++) {