javascript - 随 secret 码生成器 JavaScript

标签 javascript math random

我使用窗口提示和 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 还可以放什么。

最佳答案

您需要将 key_string 的属性连接到 passwordCharSet,而不是对提示的响应。

获取随机字符时,需要索引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());

关于javascript - 随 secret 码生成器 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021441/

相关文章:

c++ - 对二进制字符串进行范围查询?

php随机x位数

c# - 你如何在C#中获得随机的当前种子?

javascript - 如何在 useState Hook 中将字符串转换为数字?

javascript - 重新选择 - 在 createSelector 中使用第二个选择器的自定义参数

javascript - 使用 jQuery 切换单个 Div 层

mysql - 如何在半复杂场景中正确检测局部最大值和曲线窗口?

javascript - 如何保持canvas监听事件?

math - 如何标准化图像?

ruby - 相同的随机数 ruby