@Uspeshnyy_Programmist
Человек который смог.

Почему не работает проверка сложности пароля?

Моя задача заключается в том что бы как-то проверять пароль на сложность (ну там "Простой", " Средний"...).
В зависимости от того сколько букв, есть ли заглавные буквы, цифры, спецсимволы...
Нашел в нете вот такой пример:
const getPasswordComplexity = (pass) => {
    const password = pass;
    const smallLetters = 'qwertyuiopasdfghjklzxcvbnm';
    const bigLetters = 'QWERTYUIOPLKJHGFDSAZXCVBNM';
    const digits = '0123456789';
    const specials = '!@#$%^&*()_-+=|/.,:;[]{}';
    let isS = false;
    let isB = false;
    let isD = false;
    let isSp = false;
    for (let i = 0; i < password.length; i + 1) {
      if (!isS && smallLetters.indexOf(password[i]) !== -1) isS = true;
      else if (!isB && bigLetters.indexOf(password[i]) !== -1) isB = true;
      else if (!isD && digits.indexOf(password[i]) !== -1) isD = true;
      else if (!isSp && specials.indexOf(password[i]) !== -1) isSp = true;
    }
    let count = 0;
    let text = '';
    if (isS) count += 1;
    if (isB) count += 1;
    if (isD) count += 1;
    if (isSp) count += 1;
    if (password.length < 6 && count < 3) text = 'Простой';
    else if (password.length < 6 && count >= 3) text = 'Средний';
    else if (password.length >= 8 && count < 3) text = 'Средний';
    else if (password.length >= 8 && count >= 3) text = 'Сложный';
    else if (password.length >= 6 && count === 1) text = 'Простой';
    else if (password.length >= 6 && count > 1 && count < 4) text = 'Средний';
    else if (password.length >= 6 && count === 4) text = 'Сложный';
    return pass;
  }
};

Если вкратце, то есть функция, которая принимает строку, а дальше через цикл проверяет на соответствие сложности пароля.
Но если запустить код, то страница крашнется, codesandbox на счет этого говорит, что циклов слишком много, а если в браузере просто открывать то он не запускается просто виснет.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
for (let i = 0; i < password.length; i + 1) {

если запустить код то страница крашнется, codesandbox на счет этого говорит что циклов слишком много

Ну да, i + 1 - счётчик не меняет своего значения, цикл получается бесконечным.

Должно быть или i += 1 или i++.

return pass;

Наверное, всё-таки должно быть return text.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы