@ozerovlife

Почему срабатывают оба условия в цикле?

Здравствуйте, учу js, немного не могу понять почему срабатывает if else если первый if срабатывает. Тоесть если я ввожу правильную букву, должно сработать первое условие и добавить эту букву в массив, но второе условие говорит что "если буква которая подставляется циклом не равна букве которую ввели, вывести сообщещие ...", хотя буква же подошла и по моим соображениям уже if else не должен сработать? Помогите разобраться.

Сам код
let res = [];
function nam(){
    let guess = prompt();
    let word = "cat";
    let remain = word.length;
    for(let i = 0; i < remain; i++){
        if (guess == word[i]){
            res[i] = guess;
            remain--;
    } else if(word[i] !== guess) alert("no")
}
}
  • Вопрос задан
  • 540 просмотров
Решения вопроса 2
@L1nks
Всё правильно. Смотри. Предположим ты написал букву "c". Идем по циклу c == c ?Да, присваиваем значение в массив, потом идет следующее значение и тут уже значения c == a не равны, поэтому выполнится условие else if.
Наверно цикл можно переписать на тернарный оператор. Возможно кто нибудь предложил лучшее решение
let guess = prompt();
    let word = "cat";
    let remain = word.length;

    word.includes(guess) ? res.push(guess) : alert('no')
Ответ написан
@oomphoomph
У тебя второе условия срабатывает, когда уже на другой ступене цикла.Например, ты ввел "c", он его сравнил с первым индеском списка ("с" равно "с") записал его .И потом перешел на сравнения условия второй итерации, где "с" уже не будет равно "а", и потом "c" не будет равно "t".Поэтому ты получаешь два алерта с "no".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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