Почему не срабатывает замена числа на слово? В консоль выводится только числа от 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);
И тогда понятно, почему ваш код не работает
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости