Я так решил эту задачу:
var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
if(time <= 20 && time >= 7 ){
if((time >= 8 && time < 13) || (time > 14 && time < 19)){
goToDairy = true;
}
if(time >= 13 && time <= 14){
goToStore = true;
}
if((time >= 7 && time < 8) || (time >= 19 && time <= 20) ){
goToMarket = true;
}
}else{
console.log('все места закрыты и можно никуда не ходить');
}
Gizma
30.Май.2020 08:22:30
22
Подскажите, почему код работает только с условиями else if, а просто с вложенными if не работает?
var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
//молокозавод работает
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;
}
Gizma
30.Май.2020 08:34:25
23
Все, сорри, вопрос снят, сам уже нагуглил, оказывается при просто if прыдыдущие условия все равно выполнятся, т.е. даже если первое условие сработало, если через if else, то если первое условие сработает, остальные выполняться уже не будет, на всякий случай если кому нужно, вот ссылка: https://ru.stackoverflow.com/questions/588352/Как-работает-оператор-else-if-и-в-чем-отличие-от-if
Еще вариант, без elfe if
var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
if ((time >= 8 && time < 13) || (time >= 14 && time <19)) {
goToDairy = true;
}
if (((time >= 9 && time < 14) || (time >= 15 && time <17)) && goToDairy == false) {
goToStore = true;
}
if ((time >= 7 && time < 20) && goToDairy == false && goToStore === false) {
goToMarket = true;
}
Casto
11.Сентябрь.2020 15:24:29
26
Спасибо за ответы, сначала думал что нужно использовать !13 && !14 , а логика оказалась другая через или, просто разделить время работы) ||
Wimaks
18.Январь.2021 10:04:30
27
Твой код неверен, так как у тебя не учитывается, что, если время 13.15, то программа отправит его на молокозавод, который закрыт.
let time = 15;
let goToDairy = false;
let goToStore = false;
let goToMarket = false;
if ((time >= 7 && time < 8) || (time >= 19 && time <= 20)) {
goToMarket = true;
} else if ((time >= 8 && time < 13) || (time > 14 && time < 19)) {
goToDairy = true;
} else if (time >= 13 && time < 14) {
goToStore = true;
}
hexOr
15.Апрель.2021 17:22:35
28
Такого варианта вроде не было
if (time > 8 & time < 19 & Math.floor(time) !== 13) {
goToDairy = true;
} else if (time > 9 & time < 17) {
goToStore = true;
} else if (time >= 7 & time < 20) {
goToMarket = true;
}
Kinel
17.Апрель.2021 09:15:52
29
let time = 15;
let goToDairy = false;
let goToStore = false;
let goToMarket = false;
if ((time >= 8 && time < 13) || (time >= 14 && time < 19)) {
goToDairy = true;
} else if (time >= 13 && time < 14) {
goToStore = true;
} else if ((time >= 7 && time < 8) || (time >= 19 && time <= 20)) {
goToMarket = true;
}
Bohdan
15.Ноябрь.2021 18:05:13
31
Мой вариант:
let goToDairy = false;
let goToStore = false;
let goToMarket = false;
if ((time >= 8 && time < 19) && !(time >= 13 && time <= 14)) {
goToDairy = true;
} else if ((time >= 9 && time < 17) && !(time >= 14 && time <= 15)) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
}
let goToDairy = false;
let goToStore = false;
let goToMarket = false;
if ((time >= 8 && time < 19) && (time < 13 || time > 14))
{ goToDairy = true; }
else if ((time >= 9 && time < 17) && (time < 14 || time > 15))
{ goToStore = true; }
else if (time >= 7 && time < 20)
{ goToMarket = true; }