gpt4 book ai didi

javascript - 如何将此片段添加到现有程序中而不使其太长?

转载 作者:行者123 更新时间:2023-11-30 14:35:07 25 4
gpt4 key购买 nike

我编写了一个程序来根据不同的标准验证密码输入,如果满足这些标准,则在每个点添加 25%,最后输出总计(密码强度)。这是实现:

let passwordStrength = 0;
function checkPassword(password) {
if (typeof password !== 'string' || password.trim() === ''){
return 'Only strings are allowed';
}
let trimmedPassword = password.trim();
let regex1 = /[a-z]/;
let regex2 = /[A-Z]/;
let regex3 = /[0-9]/;
let regex4 = /[$@#&!]/;

if (regex1.test(trimmedPassword)){
passwordStrength += 25;
}
if (regex2.test(trimmedPassword)){
passwordStrength += 25;
}
if (regex3.test(trimmedPassword)){
passwordStrength += 25;
}
if (regex4.test(trimmedPassword)){
passwordStrength += 25;
}
if (trimmedPassword.length < 6 || trimmedPassword.length > 12){
return 'Password can not be less than 6 or greater than 12 characters';
}
return passwordStrength += '%';
}
console.log(checkPassword('@manGaLa'));// returns 75%

现在,我想添加与各种优势相关的相应声明,如下所示:

if passwordStrength === 25%, return poor,
if passwordStrength === 50%; return weak,
if passwordStrength === 75%; return medium,
if passwordStrength === 100%; return strong.

如何在不使程序太长的情况下添加它?

最佳答案

如果您发现自己多次执行相同的操作,您应该考虑使用某种循环。在这里,使用 reduce 是有益的,因此您不必在函数外部维护变量。

function checkPassword(password) {
if (typeof password !== 'string' || password.trim() === '') {
return 'Only strings are allowed';
}
let trimmedPassword = password.trim();

if (trimmedPassword.length < 6 || trimmedPassword.length > 12) {
return 'Password can not be less than 6 or greater than 12 characters';
}

return [/[a-z]/, /[A-Z]/, /[0-9]/, /[$@#&!]/].reduce((total, regex) => {
return regex.test(trimmedPassword) ? total + 25 : total;
}, 0) + '%';
}

console.log(checkPassword('@manGaLa'));

如果您想包括一些关于密码强度的附加文本,您应该考虑是否同时需要百分比和文本。你只需要他们两个在一起吗?你需要他们分开吗?由于您要返回字符串,因此可以将对象用作字典:

const percentToHint = {
'25%': 'poor',
'50%': 'weak',
'75%': 'medium',
'100%': 'strong'
}

percentToHint[yourReturnValue] // => result

但这可能只有在您需要将此文本与您的 checkPassword 函数分开时才有意义。

关于javascript - 如何将此片段添加到现有程序中而不使其太长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539147/

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