Функция JS, содержащая массив множества специальных символов, не работает - PullRequest
0 голосов
/ 25 мая 2019

Я новичок в кодировании, я начал изучать JS в Codecademy ... В этом курсе есть проект под названием "Проверка пароля" ... В соответствии с этим проектом я сделал эту функцию с именем hasSpecialCharacter, чтобы проверить, пароль имеет хотя бы один специальный символ, но когда я выполнил этот код и попытался запустить его, используя образец пароля, он ничего не делает, и консоль перестает работать ...

Я пытался запустить этот код на своем ПК из VS Code и Powershell в качестве консоли JS, но когда я запускаю это, консоль ничего не показывает, но задача продолжает выполняться ... Я даже пытался удалить некоторые символы из массива, но он все еще не работал ...

function hasUpperCase(input) {
    for (var i = 0; i < input.length; i++) {
        if (input[i] === input[i].toUpperCase()) {
            return true;
        }
    }
}
  
function hasLowerCase(input) {
    for (var j = 0; j < input.length; j++) {
        if (input[j] === input[j].toLowerCase()) {
            return true;
        }
    }
}
  
function isLongEnough(input) {
    if (input.length >= 8) {
        return true;
    }
}

function hasSpecialCharacter(input) {
    var specialCharacters = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', ';', ':', '\'', '"', '\\', '|', ',', '<', '.', '>', '/', '?'];
    
    for (var k = 0; k < input.length; k++) {
        for (var l = 0; specialCharacters.length; l++) {
            if (input[k] === specialCharacters[l]) {
                return true;
            }
        }
    }
}

function isPasswordValid(input) {
    if (hasUpperCase(input) && hasLowerCase(input) && isLongEnough(input)) {// && hasSpecialCharacter(input)) {
        console.log("The password is valid");
    } if (!hasUpperCase(input)) {
        console.log("The password needs atleast 1 capital letter");
    } if (!hasLowerCase(input)) {
        console.log("The password needs atleast one small letter");
    } if (!isLongEnough(input)) {
        console.log("The password must be atleast 8 characters long");
    } if (!hasSpecialCharacter(input)) {
        console.log("The password needs atleast 1 special character");
    }
}
  
isPasswordValid('red');

Я думал, что вывод в консоли будет таким:

PS C:\Users\Fuad Hasan\Desktop\Codes> node .\passwordValidator2.js
The password needs atleast 1 capital letter
The password must be atleast 8 characters long
The password needs atleast 1 special character

но курсор консоли продолжает мигать, как будто sth загружается после этого:

PS C:\Users\Fuad Hasan\Desktop\Codes> node .\passwordValidator2.js
The password needs atleast 1 capital letter
The password must be atleast 8 characters long
...

1 Ответ

1 голос
/ 25 мая 2019

В вашем коде есть ошибка.

Редактировать эту строку

for (var l = 0; specialCharacters.length; l++) {

до

for (var l = 0; l < specialCharacters.length; l++) {

Выполнить / запустить фрагмент ниже:

function hasUpperCase(input) {
    for (var i = 0; i < input.length; i++) {
        if (input[i] === input[i].toUpperCase()) {
            return true;
        }
    }
}
  
function hasLowerCase(input) {
    for (var j = 0; j < input.length; j++) {
        if (input[j] === input[j].toLowerCase()) {
            return true;
        }
    }
}
  
function isLongEnough(input) {
    if (input.length >= 8) {
        return true;
    }
}

function hasSpecialCharacter(input) {
    var specialCharacters = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', ';', ':', '\'', '"', '\\', '|', ',', '<', '.', '>', '/', '?'];
    
    for (var k = 0; k < input.length; k++) {
        for (var l = 0; l < specialCharacters.length; l++) {
            if (input[k] === specialCharacters[l]) {
                return true;
            }
        }
    }
}

function isPasswordValid(input) {
    if (hasUpperCase(input) && hasLowerCase(input) && isLongEnough(input)) {// && hasSpecialCharacter(input)) {
        console.log("The password is valid");
    } if (!hasUpperCase(input)) {
        console.log("The password needs atleast 1 capital letter");
    } if (!hasLowerCase(input)) {
        console.log("The password needs atleast one small letter");
    } if (!isLongEnough(input)) {
        console.log("The password must be atleast 8 characters long");
    } if (!hasSpecialCharacter(input)) {
        console.log("The password needs atleast 1 special character");
    }
}
  
console.log('Validating password: "red"');
isPasswordValid('red');
console.log('Validating password: "red@Redcolor"');
isPasswordValid('red@Redcolor');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...