我在做这个黑客地球问题,(可以忽略这个问题)
基本上在下面的代码片段中
function minimumNumber(n, password) {
const mapStrength = {
numberProp: false,
lowerCase: false,
upperCase: false,
specialChar: false
}
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
let charRequeiredToMakePasswordStrong = 0
let bufferLength = (6-n) > 0 ? 6-n : 0
console.log(`This is buffer:`, bufferLength)
// Split password and itt
password.split('').forEach(character => {
// Checking if character is number
if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
// Checking if character is
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
if (character.match(/[^a-zA-Z]/) && (character === character.toUpperCase()) && !mapStrength.upperCase) mapStrength.upperCase = true
if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true
})
console.log(mapStrength)
// Calculating Number of false
Object.values(mapStrength).forEach(charge => {
if (!charge) charRequeiredToMakePasswordStrong += 1
})
console.log(charRequeiredToMakePasswordStrong, bufferLength)
if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
return bufferLength
}
minimumNumber(3, 'zss');
为什么我的mapStrength.lowerCase是假的?在这句话里,我以为我是真的?
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true发布于 2019-09-21 22:36:21
用你的测试:
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) {
mapStrength.lowerCase = true
}第一个条件只适用于character.match(/[^a-zA-Z]/) -换句话说,如果character不是字母顺序的话。[^匹配字符集中不属于下列字符之一的任何字符。使用/[a-z]/i代替(这与[a-zA-Z]相同,只是较少重复):
function minimumNumber(n, password) {
const mapStrength = {
numberProp: false,
lowerCase: false,
upperCase: false,
specialChar: false
}
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
let charRequeiredToMakePasswordStrong = 0
let bufferLength = (6-n) > 0 ? 6-n : 0
console.log(`This is buffer:`, bufferLength)
// Split password and itt
password.split('').forEach(character => {
// Checking if character is number
if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
// Checking if character is
if (character.match(/[a-z]/i) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
if (character.match(/[a-z]/i) && (character === character.toUpperCase()) && !mapStrength.upperCase) mapStrength.upperCase = true
if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true
})
console.log(mapStrength)
// Calculating Number of false
Object.values(mapStrength).forEach(charge => {
if (!charge) charRequeiredToMakePasswordStrong += 1
})
console.log(charRequeiredToMakePasswordStrong, bufferLength)
if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
return bufferLength
}
minimumNumber(3, 'zss');
minimumNumber(3, 'zsS');
您可以通过使用分配给mapStrength.lowerCase的单个条件来提高代码的可读性,而不管如何:
if (character.match(/[a-z]/)) {
mapStrength.lowerCase = true;
}
if (character.match(/[A-Z]/)) {
mapStrength.upperCase = true;
}
function minimumNumber(n, password) {
const mapStrength = {
numberProp: false,
lowerCase: false,
upperCase: false,
specialChar: false
}
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
let charRequeiredToMakePasswordStrong = 0
let bufferLength = (6-n) > 0 ? 6-n : 0
console.log(`This is buffer:`, bufferLength)
// Split password and itt
password.split('').forEach(character => {
// Checking if character is number
if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
// Checking if character is
if (character.match(/[a-z]/)) {
mapStrength.lowerCase = true;
}
if (character.match(/[A-Z]/)) {
mapStrength.upperCase = true;
}
if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true
})
console.log(mapStrength)
// Calculating Number of false
Object.values(mapStrength).forEach(charge => {
if (!charge) charRequeiredToMakePasswordStrong += 1
})
console.log(charRequeiredToMakePasswordStrong, bufferLength)
if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
return bufferLength
}
minimumNumber(3, 'zss');
minimumNumber(3, 'zsS');
https://stackoverflow.com/questions/58044603
复制相似问题