gpt4 book ai didi

javascript - while循环中非​​法的break语句

转载 作者:行者123 更新时间:2023-12-02 22:30:23 24 4
gpt4 key购买 nike

很抱歉重复别人的问题。我已经看过这些答案,但仍在努力完成我需要的事情。

我想继续尝试我的密码生成器功能,直到它给我一个包含符号、数字和大写字母的密码生成器功能。

你能帮忙吗?

while (true) {
let trialPassword = randomPassGen(10)

trialPassword.forEach((letter)=>{
if (!upperLetters.includes(letter)){
return
} else if (!symbols.includes(letter)) {
return
} else if (!numbers.includes(letter)) {
return
} else {
break
}
})
console.log(trialPassword)
}

编辑:这是我的密码生成器的完整代码。这次尝试使用 for 循环,但仍然没有成功。谢谢大家!

const upperLetters = [
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'
]

const lowerLetters = []

// build lowerLetters from upper skipping lowecase L which could be seen as a 1
upperLetters.forEach((letter)=>{
if(letter !== 'L'){
lowerLetters.push(letter.toLowerCase())
}
})
// skips letter l

const numbers = [0,1,2,3,4,5,6,7,8,9]

const symbols = [
'!', '@', ';', ':', '$', '£', '#', '[', ']', '?', '<', '>'
]

const allChars = []

symbols.forEach((sym)=>{
allChars.push(sym)
})

numbers.forEach((num)=>{
allChars.push(num)
})

lowerLetters.forEach((lowLet)=>{
allChars.push(lowLet)
})

upperLetters.forEach((upLet)=>{
allChars.push(upLet)
})

const randomPassGen = (passLength) => {
passArr = []

for (let i = 0; i <= passLength; i++) {
let r = Math.floor(Math.random() * allChars.length);
passArr.push(allChars[r])
}
return passArr
}



while (true) {
let trialPassword = randomPassGen(chosenLength)

for (let i = 0; i <=trialPassword.length; i++){
let l = trialPassword[i]
if(!upperLetters.includes(l)){
continue
} else if (!symbols.includes(l)){
continue
} else if (!numbers.includes(l)){
continue
} else {
console.log(trialPassword)
break
}
}
}

最佳答案

如果您的目的是退出 while 循环,请使用变量作为标志,并在 forEach 循环中设置该标志:

var keepgoing=true;
while (keepgoing) {
let trialPassword = randomPassGen(10)

trialPassword.forEach((letter)=>{
if (!upperLetters.includes(letter)){
keepgoing=false; return;
} else if (!symbols.includes(letter)) {
keepgoing=false; return;
} else if (!numbers.includes(letter)) {
keepgoing=false; return;
} else {
keepgoing=false;
}
})
console.log(trialPassword)
}

此外,if/else if 链是不好的编码风格,但那是另一个话题了。

关于javascript - while循环中非​​法的break语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com