Мне нужно несколько случаев в выражении switch в JavaScript, что-то вроде:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
Как я могу это сделать? Если в JavaScript нет способа сделать что-то подобное, я хочу узнать альтернативное решение, которое также следует концепции DRY .
javascript
switch-statement
Афшин Мехрабани
источник
источник
Ответы:
Используйте функцию провала в
switch
заявлении. Соответствующий регистр будет выполняться до тех пор, пока не будет найденbreak
(или конецswitch
оператора), так что вы можете написать его так:источник
switch('10') { case 1, '10': console.log('ok') }
printsok
switch(1)
. Метка здесь - просто выражение запятой.Это работает в обычном JavaScript
Приветствия.
источник
Вот другой подход, избегающий
switch
утверждения в целом:источник
switch ... case
. Слишком легко забытьbreak
утверждение, и если вы намеренно используете провал, эти забытыеbreak
утверждения будет очень трудно обнаружить. Эта версия поиска метода также обладает множествомswitch ... case
недостатков, таких как динамическая расширяемость или возможность полной замены объекта для переключения режимов. Это также легче поддерживать в чистоте, и может привести к большему количеству поддерживаемого кода. См. Ericleads.com/2012/12/switch-case-considered-harmful//fallthrough
вместо того,break
когда я намеренно опускаюbreak
. Это помогает определить, когда это ошибка и когда она преднамеренная.В Javascript, чтобы назначить несколько случаев в переключателе, мы должны определить,
different case without break inbetween
как указано ниже:Пожалуйста, посмотрите пример нажмите на ссылку
источник
Если вы используете ES6, вы можете сделать это:
Или для более ранних версий JavaScript вы можете сделать это:
Обратите внимание, что это не сработает в старых браузерах IE, но вы можете довольно легко это исправить. См. Вопрос определения, находится ли строка в списке в javascript для получения дополнительной информации.
источник
includes
слово? Выбирайте.В узле кажется, что вы можете сделать это:
В некоторых случаях это делает код более компактным.
источник
Добавляя и уточняя ответ Стефано, вы можете использовать выражения, чтобы динамически устанавливать значения для условий в switch, например:
Так что в вашей проблеме вы можете сделать что-то вроде:
хотя не так много СУХОГО ..
источник
varName
внутри выражения case, ожидайте, что varName кэшируется вами.Вы можете использовать оператор ' in ' ...
полагается на вызов объекта / хеша ...
так что это так быстро, как может быть javascript ...
Наслаждайся, ZEE
источник
Я использую так:
источник
g
флаг, так как вы используете регулярные выражения только один раз и выбрасываете их. На самом деле, если вы держите их вне функции,g
флаг будет вредить вам, пытаясь сопоставить его с индексом, отличным от 0, для последующих.test(
s. Я также исправил опечатку, в которой регистр переключателя былsensor
переменным, а неtrue
постоянным для сопоставления логических выражений. Смотрите редактирование.case /officedocument/.test(type) && /presentation/.test(type): iconClass = "far fa-file-powerpoint red"; break;
Это зависит. Свитч оценивает один раз и только один раз. После матча все последующие утверждения кейса до «перерыва» срабатывают независимо от того, что говорится в кейсе.
источник
Мне нравится это для ясности и сухого синтаксиса.
источник
Я вижу, что здесь есть много хороших ответов, но что произойдет, если нам нужно проверить более 10 случаев? Вот мой собственный подход:
источник
if (accessDenied.includes(varName)) return 'Access Denied!'; return 'Access Allowed.'
более чем достаточно.Проблема с вышеуказанными подходами состоит в том, что вам приходится повторять несколько
case
секунд каждый раз, когда вы вызываете функцию, которая имеетswitch
. Более надежное решение - иметь карту или словарь .Вот пример
источник
Ты можешь сделать это:
или просто одна строка кода:
небольшое улучшение от ответа ErikE
источник
Для любого, кто приезжал сюда с похожей проблемой, с которой я столкнулся, с которой я столкнулся после нескольких недель кодирования и выгорания, моя ситуация была чем-то похожим на:
Всегда
default
дело вводится. Если вы сталкиваетесь с похожей проблемой оператора переключения нескольких случаев, вам нужно:Надеюсь, это кому-нибудь поможет, я выдернул волосы, прежде чем не забыть использовать корпус переключателя так же, как я использую его в своих редукторных редукторах.
источник
Одним из возможных решений является:
источник
Для меня это самый простой способ:
источник
Другой способ сделать несколько случаев в операторе switch, когда внутри функции
источник
Вы можете написать это так:
источник
источник
switch
утверждение должно работать. Простоcase "1":
нетcase (num = "1"):
.document.getElementById("result").innerHTML = ....
вне коммутатора и добавить результат дневного значения в конце?num
но он все еще работает, потому чтоswitch
он уже был оценен, и присвоение дает значение. Это программирование с помощью мутации / машинного обучения во всей красе.просто переключите состояние переключателя
источник
(expression)
в скобках, а возвращаемое значение должно быть входным. Смотрите мой ответswitch(true) { case (var1 === 0 && var2 === true): {} }