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

问题描述

我是在随机密码生成器上使用 JS 编码和工作的新手,需要用户输入来验证至少一个字符。我有提示并确认工作,但不确定如何验证笔记;

我的 if 语句和 for 循环变暗了。当我使用它时,该userSelection阵列正在工作console.log

var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lowerCase = "abcdefghijklmnopqrstuvwxyx";
var numbers = "0123456789";
var specialChar = "!@#$%^&*()?/;:~";

//added userSelection & finalPassword var
var userSelection =[]; 

var finalPassword = [];

//added functions, prompt, console.log
function generatePassword() { 

  
  var passLength = prompt("Please insert a number between 8 to 128");
  //remember to add a condition where IF  the user choose less than 8 or greater than 128 to stop and alert them to follow instruction. Then ask initial question again 
  if (passLength <8 ) {
    alert ("Please insert a number between 8 to 128");
    return;
  }
  if (passLength >128 ) {
  alert ("Please insert a number between 8 to 128");
  return;
  }
  
  //added upperCase/lowerCase confirm var
  var upperC = confirm("Would you like Uppercase Letters");
  if(upperC) {
    userSelection.push(upperCase);
  } 
  
  var lowerC = confirm("Would you like Lowercase Letters");
  if(lowerC) {
    userSelection.push(lowerCase);
  }
  //added remaining specChar and numb var
  var specC = confirm("Would you like and Special Characters");
  if(specC) {
    userSelection.push(specialChar);
  }

  var numb = confirm("Would you like to add Numbers to your password?"); 
  if(numb) { 
    userSelection.push(numbers);
  }
  console.log("user selection = " + userSelection);

  //added if statement) NEED definition of what this is doing
  if (userSelection.length ===0);
  return;

  // for loop with random index to create random char 
  for (var i = 0; i < userSelection; i++) {
    var randomIndex = Math.floor(Math.random() * userSelection);
    var random = userSelection.charAt(randomIndex); 
  }
  //var math.floor will pick a random index for userSelection array set to var
  //math.floor to pick random char  --name as var use this to concat
}

标签: javascript

解决方案


您的问题在于以下几行:

if (userSelection.length === 0);
return;

我认为您在这里想要做的是在为空return时退出函数(使用 ) 。userSelection这几乎是那个的代码......

但是,由于语句行;末尾有一个分号,因此if您将代码分成两个单独的语句:

  • 如果userSelection是空的,什么也不做。
  • 退出函数。

要解决此问题,您只需删除分号:

if (userSelection.length === 0)
  return;

避免此类问题的一种方法是始终在 if 语句中使用花括号(就像您对其他 if 语句所做的那样):

if (userSelection.length === 0) {
  return;
}

推荐阅读