Длительность прогулки


#1

var minutes=20;
if (itsRaining || temperature >= 35 || temperature <= 0) {minutes=0}
//Сразу обозначим условия при котором прогулка не состоится. Если идет дождь или температура 35+ или 0- , то минуты=0. //

else if (temperature<=20) {minutes=temperature}
//Сокращение длительности прогулки я реализовал довольна просто. Иначе если, температура меньше 20, то temperature=minutes (если 10 градусов то и минут на прогулку 10)//

else (minutes=minutes*2-temperature)
Иначе умножаем минуты на 2 и вычитаем температуру. Логика такая- как видно, условия выше сокращают диапазон возможных значений переменной minutes для этого условия “иначе”.
(21-35) Для того чтобы вычитание из благоприятного времени - неблагоприятной температуры совершалось верно. умножаем минуты на два и вычитаем температуры (чот какая то белиберда, но как мог)

console.log('Минут на прогулку '+minutes);

Зачем я создал тему? Просто себя порадовать, ну и мб кому нибудь поможет этот код)


#2

Тогда хоть оформите код как код, а не просто текст.


#3

Такой вариант решения у меня получился

Summary
var temperature = 20;
var itsRaining = false;
var minutes;
var idealTemperature = 20;

if(itsRaining || temperature <= 0 || temperature >= 35) {
  minutes = 0;
  }
else if(temperature ==  idealTemperature) {
  minutes = 20;
  }
else if(temperature < 20 && temperature > 0) {
  minutes = temperature;
  }
else if(temperature > 20 && temperature < 35) {
  minutes = temperature - ((temperature - idealTemperature)*2);
  }

#4

Как-то так…
var temperature = 20;
var isRaining = true;
var minutes = 0;

if (isRaining || temperature <= 10 || temperature > 35) {
minutes = 0;
console.log(‘Время прогулки’ + minutes + ‘минут.’);
} else if (!isRaining && temperature < 15) {
minutes = 30;
console.log(‘Время прогулки’ + minutes + ‘минут.’);
} else if (!isRaining && (temperature >= 15 && temperature <25)) {
minutes = 40;
console.log(‘Время прогулки’ + minutes + ‘минут.’);
} else if (!isRaining && temperature >= 25) {
minutes = 20;
console.log(‘Время прогулки’ + minutes + ‘минут.’);
}


#5

Вот мой вариант

var temperature = 22;
var itsRaining = false;
var idealTemp = 20;

var minutes;


if (itsRaining || temperature < 0 || temperature > 35) {
  console.log(minutes = 0);
  } else if (temperature === idealTemp) {
console.log(minutes = 20);
} else if (temperature <20 && temperature >0) {
  console.log(minutes = temperature);
} else {
  console.log(minutes = idealTemp - (temperature - idealTemp));
  }

#6

Получилось очень коротко, может кому-то будет интересно:

var temperature = 25;
var itsRaining = false;

var minutes;
var minWalk = Math.abs(temperature-20);

if (itsRaining || temperature<0 || temperature>35){minutes=0}
else if (temperature==20){minutes=20}
else {minutes=20-minWalk};


#7
var temperature = 41;
var itsRaining = false;
var time = 20;
var minutes;

if ((itsRaining) || (temperature <= -1) || (temperature > 35)) {
  minutes = 0;
  console.log('Ты не идешь гулять! Сиди дома, овощ!');
} else if (temperature === 20) {
  console.log('Идеальная погода для отдыха! Ди гулять ' + (minutes = 20) + ' мин.');
} else if (temperature < 20) {
  minutes = temperature--;
  console.log('Тебе гулять ' + (minutes) + ' мин.');
} else if (minutes = time - (temperature - time)) {
  console.log('Тебе гулять ' + (minutes) + ' мин.');
}

#8
var temperature = 20;
var itsRaining = false;
var minutes = 20;

 if (itsRaining === true && temperature <= 0 || itsRaining === true && temperature >= 35 || temperature > 35 
 || temperature < 0 || itsRaining === true) {
 minutes = 0;
 } else {
  if (itsRaining === false && temperature < 20) {
  minutes = 20 - (20 - temperature);
  } else {
   if (itsRaining === false && temperature > 20) {
    minutes = 20 - (temperature - 20);
   }
  }
 }

#9

Подскажите, для синтаксиса все равно есть ли действие внутри else с вложенным условием или можно начинать сразу с нового условия? т.е. как ребята выше пишут else if (…) {…} else if (…) {…}
И вообще, если кто практикующий JS как считается хорошим тоном писать такие вложенности?

страшна, вырубай, нинадаа
if (!isRaining && temperature >= 10 && temperature <= 35) {
  if (temperature >= 10 && temperature < 15) {
    minutes = 30;
  } else {
      if (temperature >= 15 && temperature < 25) {
        minutes = 40;
      } else {
          minutes = 20;
        }
    }
}
console.log('Кекс гуляет: '+minutes+' минут.');

#10

Если уже написана ветка else, то внутри нее лучше дописать действие. Здесь были варианты кода, когда else не использовалось вообще, то есть просто череда независимых друг от друга условий.
Что касается хорошего тона, то если условий становится очень много, то используют конструкцию switch case (код более читабельный и понятный). В целом вариант выбора конструкции зависит от конкретной задачи.
По вашему коду могу сказать, что вряд ли хорошо, что вы внутри условий каждый раз создаете новую переменную. Вам нужно было просто переопределять ее значение в зависимости от условий.


#11

это касаемо ввода var каждый раз? эт косяк, да, поправлю сейчас, спасибо за ответ.

"Сколько гулять" из теории
var temperature = 20;
var isRaining = true;
var minutes = 0;

if (!isRaining) {
  if (temperature >= 10 && temperature < 15) {
    minutes = 30;
  } else if (temperature >= 15 && temperature < 25) {
    minutes = 40;
  } else if (temperature >= 25 && temperature <= 35) {
  minutes = 20;
  }
}
"Длительность прогулки" из практики
var temperature = 20;
var itsRaining = false;
var minutes = 0;

if (!itsRaining) {
  if (temperature >= 0 && temperature <= 35) {
  minutes = 20 - Math.abs(temperature - 20);
  }
}

#12

if (itsRaining == true || temperature < 0 || temperature > 35) {
minutes = 0;
} else if (temperature == 20) {
minutes = 20;
} else if (temperature > 20) {
minutes = 20 - (temperature - 20);
} else if (temperature < 20) {
minutes = 20 - (20 - temperature);
}


#13

if ( !itsRaining) {
if ( temperature <= 0 || temperature > 35) {
minutes = 0;
}

if ( temperature === 20) {
minutes = 20;
}

if (temperature > 20 && temperature <= 35) {
minutes = 20 - ( temperature - 20);
}

if (temperature < 20 && temperature > 0) {
minutes = 20 -(-(temperature - 20));
}
}
else {
minutes = 0 ;
}


#14

var temperature = 20;
var itsRaining = false;
var minutes=0;

if ( itsRaining || temperature<0 || temperature>35 )

{ minutes=0; }

else if ( temperature != 20 && temperature < 35 )
{ minutes = 20-Math.abs(temperature-20) ; }

else if ( temperature=20 )
{ minutes=20; }

Коротко и просто (sknnpns).


#15
можно еще короче и проще
var temperature = 20;
var itsRaining = false;
var minutes = 0;

if (!itsRaining && temperature >= 0 && temperature <= 35) {
  minutes = 20 - Math.abs(temperature - 20);
}

#16

Держи, отличный вариант решения.

var temperature = 20;
var itsRaining = false;

var minutes;

if (!itsRaining)
{
  if (temperature<0 || temperature>35)
  {
    minutes = 0;
  }
  else if (temperature==20)
  {
    minutes=20;
  }
  else
  {
    minutes = 20 - Math.abs(20 - temperature);
  }
}
else
{
  minutes=0;
}

#17

Так как я только начал осваивать JS, мой вариант для меня самый понятный и читаемый:

var temperature = 20;
console.log('tC = ' + temperature);
var isRaining = true;
console.log('Rain = ' + isRaining);
var minutes = 0;

if (isRaining || temperature < 10 || temperature > 35) {
minutes = 0;
}

else if (!isRaining && temperature >= 10 && temperature < 15) {
minutes = 30;
}

else if (!isRaining && temperature >= 15 && temperature < 25) {
minutes = 40;
}

else if (!isRaining && temperature >= 25 && temperature <= 35) {
minutes = 20;
}

console.log('Time to walk = ' + minutes + ' min');

#18

у вас код нерабочий и не соответствует styleguide. попробуйте переписать, когда полностью пройдете курсы.
upd: вы не к тому заданию топик открыли, тут задание продвинутого уровня

попробуйте проверку на isRaining сделать общей для температур. т.е. проверку на температуры вложить внутрь проверки на дождь.


#19

какому именно стайлгайду? а ещё лучше дайте ссылку на курс Академии, где есть информация по стайлгайду, которого стоит придерживаться - это будет гораздо полезнее для новичков, чем просто ваша фраза “не соответствует”.


#20

гугель
эйрбнб
самые распространенные, используйте, если забанены в поисковиках.
в курсах академии нет, на интенсивах есть.