Вот мой скрипт. Не могу понять почему после ввода продолжает проверять цикл? Задача следущая: При посещении страницы, необходимо попросить пользователя ввести свой пароль, после чего проверить содержит ли массив passwords пароль введенный пользователем. Пароль можно ввести не верно всего n раз.
написал вот такой скипт:
const passwords = ['qwerty', '111qwe', '123123', 'r4nd0mp4zzw0rd'];
let attemptsLeft = 3;
let i=1;
let input;
while (i <= attemptsLeft) {
input = prompt('Введите пароль:');
if (input === null) {
break;
}
for (const pass of passwords) {
if (pass === input) {
alert('Добро пожаловать!');
break;
}
else if (i < attemptsLeft) {
alert(`Неверный пароль, у вас осталось ${attemptsLeft - i} попыток`);
break;
} else {
alert('У вас закончились попытки, аккаунт заблокирован!');
break;
}
}
i += 1;
}
break останавливает ближайший к нему цикл. В вашем случае это for, так что while продолжает работать. По этому можно либо использовать метки, либо вынести часть с условным выражением из цикла.
про метки https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/label
про Array.prototype.some() https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/some
const passwords = ['qwerty', '111qwe', '123123', 'r4nd0mp4zzw0rd'];
let attemptsLeft = 3,
i = 1,
input;
while (i <= attemptsLeft) {
input = prompt('Введите пароль:');
if (input === null) {
break;
}
if(passwords.some(password => password === input)){
alert('Добро пожаловать!');
break;
} else if (i < attemptsLeft) {
alert(`Неверный пароль, у вас осталось ${attemptsLeft - i} попыток`);
} else {
alert('У вас закончились попытки, аккаунт заблокирован!');
}
i += 1;
}
const passwords = ['qwerty', '111qwe', '123123', 'r4nd0mp4zzw0rd'];
let attemptsLeft = 3;
let i=1;
let input;
let isAllow = false;
main_loop:
while (i <= attemptsLeft) {
input = prompt('Введите пароль:');
if (input === null) {
break;
}
for (const pass of passwords) {
if (pass === input) {
isAllow = true;
break main_loop;
}
}
alert(`Неверный пароль, у вас осталось ${attemptsLeft - i} попыток`);
i += 1;
}
if (isAllow) {
alert('Добро пожаловать!');
}
else {
alert('У вас закончились попытки, аккаунт заблокирован!');
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Дело в том что при построении кода таким образом, когда @media правила разбросаны по всем файлам, появляется потребность в их конкатенации в одно...
Пробую работать с Qt 3D C++ и понадобилось выводить динамически созданную надпись на текстуру кубаКод для отрисовки куба:
Нужно преобразовать строку(количество элементов не известно) в массив типа int и вывести i-тый элемент массива