首页 > 解决方案 > 随机密码生成器 JavaScript

问题描述

我正在使用窗口提示和 window.confirm 来询问用户是否要在密码中使用某些字符。(我知道我可以用一些 HTML 来做复选框,但这必须是 JS)。如何将确认答案传递给函数然后使用Math.floor(Math.random() * length)

const key_strings = {
    lowercase: 'abcdefghijklmnopqrstuvwxyz',
    uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    number: '0123456789',
    symbol: " !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~",
};

function generatePassword() {
  passwordCharSet = "";

  var length = window.prompt("Enter a number from 8 to 128 for password length.");

  var lowercase = window.confirm("Would you like to use lowercase letters?");
    if (lowercase == true) {
        passwordCharSet += lowercase;
    };

  var uppercase = window.confirm("Would you like to use uppercase letters?");
    if (uppercase == true) {
        passwordCharSet += uppercase;
    };

  var symbols = window.confirm("Would you like to use symbols?");
    if (symbols == true) {
        passwordCharSet += symbols;
    };

  var numbers = window.confirm("Would you like to use numbers?");
    if (numbers == true) {
        passwordCharSet += numbers;
    };

  for (let i = 0; i < length; i++) {
    _______________ Math.floor(Math.random() * length)
  }
  }

我也不确定math.floor 还能放什么。

标签: javascriptmathrandom

解决方案


您需要连接 to 的属性,key_stringpasswordCharSet不是对提示的响应。

获取随机字符时,需要索引passwordCharSet并使用passwordCharSet.length.

key_strings.symbol你需要逃避"\

const key_strings = {
  lowercase: 'abcdefghijklmnopqrstuvwxyz',
  uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
  number: '0123456789',
  symbol: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
};

function generatePassword() {
  var passwordCharSet = "";

  var length = window.prompt("Enter a number from 8 to 128 for password length.");

  var lowercase = window.confirm("Would you like to use lowercase letters?");
  if (lowercase) {
    passwordCharSet += key_strings.lowercase;
  };

  var uppercase = window.confirm("Would you like to use uppercase letters?");
  if (uppercase) {
    passwordCharSet += key_strings.uppercase;
  };

  var symbols = window.confirm("Would you like to use symbols?");
  if (symbols) {
    passwordCharSet += key_strings.symbol;
  };

  var numbers = window.confirm("Would you like to use numbers?");
  if (numbers) {
    passwordCharSet += key_strings.number;
  };
  var password = "";
  for (let i = 0; i < length; i++) {
    password += passwordCharSet[Math.floor(Math.random() * passwordCharSet.length)]
  }
  return password;
}

console.log(generatePassword());


推荐阅读