javascript - 如果在 JS 中为真,则从每个数组中提取?

我正在创建一个随机密码生成器,它运行良好。但是,我注意到当每个 if 语句的条件为真时,我的 generatePassword() function 并不总是从每个数组中提取。例如:

function generatePassword() {
  // The arrays below are the arrays from which my generatePassword function can pull characters.
  const lowercase = ["a", "b", "c", "d", "e", "f", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
  const uppercase = ["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", "X"];

let charSet = [];

const passLength = prompt("Choose a length for your password. (This should be any amount between 8 and 128 characters.)");
  if (!isNaN(passLength) && passLength >= 8 && passLength <= 128) {
    const passLc = confirm("Should the password contain lowercase letters?");
    if (passLc) {
      for(let i = 0; i < lowercase.length; i++) {
        charSet.push(lowercase[i]);
      }
    }

    const passUc = confirm("Should the password contain uppercase letters?");
    if (passUc) {
      for(let i = 0; i < uppercase.length; i++) {
        charSet.push(uppercase[i]);
      }
    }

} else {
    prompt("Sorry, that entry is invalid. Please enter a value between 8 and 128.");
  }
  console.log(charSet);
  return password;
}

function getRandomInt(max) {
  return Math.floor(Math.random() * max);
}

当用户对每个条件的回答为真时,有没有办法确保我的 function 从每个数组中提取?先感谢您!

编辑:为混乱道歉!

  • charSet 数组是一个空白数组,我用它来编译一个包含所有较小数组索引的数组,然后使用它来提取随机字符。
  • 据我了解, getRandomInt 的目的是从 charSet 数组中提取 randomIndex 常量的随机索引项。

回答1

我想我遇到了一个更简洁的代码来生成密码:

Math.random().toString(36).slice(2, 10)

相似文章

随机推荐

最新文章