Ошибка логическая, но найти не могу где она?
var time = 15; // Время
var goToDairy = false; // Молокозавод
var goToStore = false; // Магазин
var goToMarket = false; // Рынок
if (time) {
if (time >= 8 && time < 13 && time >= 14 && time < 19) {
goToDairy = true;
} else
if (time >= 9 && time < 14 && time >= 15 && time < 17) {
goToStore = true;
} else
if (time >= 7 && time < 20) {
goToMarket = true;
}
}
console.log('Молокозавод: ' + goToDairy + ' Магазин: ' + goToStore + ' Рынок: ' + goToMarket);
Ineska
12.Август.2018 18:57:41
2
У вас все условия с “и”, а должны быть и с “или” тоже.
1 лайк
Исправил, можете объяснить подробно почему используется условие “или” в данном случае?
В моем понимании условие “и” было достаточно.
Код:
var time = 15; // Время
var goToDairy = false; // Молокозавод
var goToStore = false; // Магазин
var goToMarket = false; // Рынок
if (time) {
if (time >= 8 && time < 13 || time >= 14 && time < 19) {
goToDairy = true;
} else
if (time >= 9 && time < 14 || time >= 15 && time < 17) {
goToStore = true;
} else
if (time >= 7 && time < 20) {
goToMarket = true;
}
}
console.log('Молокозавод: ' + goToDairy + ' Магазин: ' + goToStore + ' Рынок: ' + goToMarket);
Например, потому что время не может быть ОДНОВРЕМЕННО И меньше 13 И больше 14
Оператор && (И) подразумевает что оба операнта, и справа, и слева должны быть true.
Здесь же это невозможно, да и вообще достаточно того, что бы сработал только один. Поэтому ставится II (Или).
2 лайка
Вот вариант использование только оператора И:
if (time >= 8 && time < 19 && time !== 13 && time !== 14) {
goToDairy = true;
} else if (time >= 9 && time < 17 && time !== 15 && time !== 14) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
}
Kyver
26.Август.2018 11:58:07
7
switch (true) {
case time >= 8 && time < 13 || time >= 14 && time < 19: goToDairy = true; break;
case time >= 13 && time < 14: goToStore = true; break;
case time >= 7 && time < 20: goToMarket = true; break;
}