@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 на счет этого говорит, что циклов слишком много, а если в браузере просто открывать то он не запускается просто виснет.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
for (let i = 0; i < password.length; i + 1) {

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

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

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

return pass;

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

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

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Индустрия Москва
от 200 000 до 250 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
26 авг. 2019, в 01:06
2000 руб./за проект
25 авг. 2019, в 23:48
4000 руб./за проект
25 авг. 2019, в 22:35
1000 руб./за проект