Почему не срабатывает замена числа на слово? В консоль выводится только числа от 1 до 100.
for (var i = 1; i <= 100; i++) {
switch (i) {
case ((i % 3 == 0) && (i % 5 == 0)):
console.log("трипять");
break;
case (i % 3 == 0):
console.log("три");
break;
case (i % 5 == 0):
console.log("пять");
break;
default:
console.log(i);
}
}
Потому что проверять надо не значение i, а истинность выражения в case - т.е. не switch(i), а switch(true):
for(var i=1; i<=100; i++){
switch(true){
case ((i%3 == 0)&&(i%5 == 0)):
console.log("трипять");
break;
case (i%3 == 0):
console.log("три");
break;
case (i%5 == 0):
console.log("пять");
break;
default:
console.log(i);
}
}
switch
сравнивает значение переменной со значениями указанными в блоках case
. И когда эти два значения совпадают, выполняет этот блок.
В case
у вас вычисляются логические значения. И вы ожидаете, что будет выполняться блок со значением true
. Значит именно это значение нужно поставить в оператор switch
for (var i = 1; i <= 100; i++) {
switch (true) {
case ((i % 3 == 0) && (i % 5 == 0)):
console.log("трипять");
break;
case (i % 3 == 0):
console.log("три");
break;
case (i % 5 == 0):
console.log("пять");
break;
default:
console.log(i);
}
}
А вообще код
switch (x) {
case a: doA(); break;
case b: doB(); break;
default: doDef();
}
Переписывается в такой
if (x == a)
doA();
else if (x == b)
doA();
else
doDef();
Или для вашего случая
if (i == ((i % 3 == 0) && (i % 5 == 0)))
console.log("трипять");
else if (i == (i % 3 == 0))
console.log("три");
else if (i == (i % 5 == 0))
console.log("пять");
else
console.log(i);
И тогда понятно, почему ваш код не работает
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я сейчас создаю БДВопрос Есть ли смысл создать таблицу для отчетов? Отчет создается каждый месяц