Вход

Просмотр полной версии : Подскажите почему не срабатывает цикл for


alacka
21.05.2021, 16:12
Здравствуйте только изучаю js подскажите почему не срабатывает цикл for внутри, тестирую с while все работает нормально



let personalMovieb = {
movies: {}
}



for (let i = 0; i < 2; i++) {
let questOne = prompt('Один из просмотренных фильмо', '');

if (questOne == '') {
alert('Поле пустое');
i--;
}

if (questOne != '') {

for (let count = 0; count < 1; count++) {
let questTwo = prompt('На сколько оцените его', '');

if (questTwo == '') {
alert('Поле пустое');
count = 0;
} else {
alert('Поле не пустое');
personalMovieb.movies[questOne] = questTwo;
}

}

}


}

console.log(personalMovieb.movies);


Это если заменить на while тогда норм все

for (let count = 0; count < 1; count++) {
let questTwo = prompt('На сколько оцените его', '');

if (questTwo == '') {
alert('Поле пустое');
count = 0;
} else {
alert('Поле не пустое');
personalMovieb.movies[questOne] = questTwo;
}

}



let count = 0;
while (count < 1) {
let questTwo = prompt('На сколько оцените его', '');

if (questTwo == '') {
alert('Поле пустое');
count = 0;
} else {
personalMovieb.movies[questOne] = questTwo;
count++;
}

}

ksa
21.05.2021, 17:12
alacka, не совсем понятно зачем тебе вообще циклы for ( ; ; )...
Просто для тренировки?

ksa
21.05.2021, 17:17
почему не срабатывает цикл for внутри
Он работает как ты ему и написал...
- Крутнулся с нулем
- Увеличил счетчик
- Проверил условие 1<1 - оно ложное
- Все. Цикл закончил работу!

ksa
21.05.2021, 17:20
Вариант с циклами for ( ; ; ) тут не совсем уместен... Он больше для перечисления...
Но, как вариант

for (let count = 0; count < 1; count++) {
let questTwo = prompt('На сколько оцените его', '');

if (!questTwo) {
alert('Поле пустое');
count = -1;
} else {
alert('Поле не пустое');
}
}

ksa
21.05.2021, 17:22
Или так...

for (let count = 0; count < 1;) {
let questTwo = prompt('На сколько оцените его', '');

if (!questTwo) {
alert('Поле пустое');
} else {
alert('Поле не пустое');
count++
}
}

alacka
21.05.2021, 21:09
Да это больше для тестов

сделал ещё вот так


for (let i = 0; i < 2; i++) {
let questOne = prompt('Один из просмотренных фильмо', '');

while (questOne == '') {
alert('Поле пустое');
questOne = prompt('Один из просмотренных фильмо', '');
}

let questTwo = prompt('На сколько оцените его', '');

while (questTwo == '') {
alert('Поле пустое');
questTwo = prompt('На сколько оцените его', '');
}

personalMovieb.movies[questOne] = questTwo;

}


все на while немного подругому, оказывается се попроще, а я все усложнял :cray:


спасибо, за примеры

рони
21.05.2021, 21:30
alacka,
:-?
let questOne;
while (!questOne) {
questOne = prompt('Один из просмотренных фильмо', '');
questOne || alert('Поле пустое');
}

let questTwo;

while (!questTwo) {

questTwo = prompt('На сколько оцените его', '');
questTwo || alert('Поле пустое');
}
alert(JSON.stringify({[questOne] : questTwo}));

alacka
21.05.2021, 22:57
красиво, но пока не понятно полностью, нужно учить
спасибо


questOne || alert('Поле пустое');


это работает как if ? верно ?

подскажите как поиска в справочниках - ||

рони
21.05.2021, 22:59
alacka,
questOne || alert('Поле пустое');
тоже что

if(!questOne ) alert('Поле пустое');

рони
21.05.2021, 23:02
alacka,
https://learn.javascript.ru/logical-operators

Если бы первый аргумент имел значение false, то || приступил бы к вычислению второго