Javascript 传递一个对象方法并在函数外部调用这些方法。随机密码发生器
新的javascript有一个密码生成器项目 我正在尝试访问generatePasswordInfo函数外部的passwordInfo对象。 我想传递passwordLength,以便为请求的密码长度生成一个随机字符 我通过getpasswordLength变量捕获密码长度,并将其存储在passwordInfo中。我想这就是我在passwordInfo中返回值时遇到的问题 我使用包含passwordInfo的generatePasswordInfo函数并将其存储在变量passwordIncludes中。然后迭代passwordIncludes的长度以获取每个索引的随机字符。然后将其推送到空数组createdPasswordJavascript 传递一个对象方法并在函数外部调用这些方法。随机密码发生器,javascript,arrays,object,Javascript,Arrays,Object,新的javascript有一个密码生成器项目 我正在尝试访问generatePasswordInfo函数外部的passwordInfo对象。 我想传递passwordLength,以便为请求的密码长度生成一个随机字符 我通过getpasswordLength变量捕获密码长度,并将其存储在passwordInfo中。我想这就是我在passwordInfo中返回值时遇到的问题 我使用包含passwordInfo的generatePasswordInfo函数并将其存储在变量passwordInclud
// 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
您的代码有两个问题
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++) {