Ответ 1
Если "Джон" всегда появляется, самое простое:
if (action.toLowerCase().indexOf("john") !== -1) {
// Do something
}
... но поскольку ваш вопрос уже изменил значения, с которыми вы проверяете action
один раз, я смущаюсь предположить это. Также обратите внимание, что он будет соответствовать "xxxjohnxxx", который может быть не таким, каким вы хотите.
Исходные предложения (обновленные для новых значений action
из вашего редактирования):
Есть много способов, все из которых показаны с использованием чувствительности в, поскольку вы упомянули это в комментариях:
String#indexOf
:
if ("|john|john beckham|john henry|giggs john|scholes john|john messi|".indexOf("|" + action.toLowerCase() + "|") !== -1) {
// Do something
}
Регулярные выражения:
if (/^(?:John|John Beckham|John Henry|Giggs John|Scholes John|John Messi)$/i.test(action)) {
// Do something
}
Поскольку вы используете только истинный/ложный результат, я использую test
, который просто возвращает true/false, а не exec
, который возвращает соответствующие результаты. Оба работают в этом случае, но браузер может немного оптимизировать test
(но тогда регулярное выражение вряд ли будет лучшим решением, если ваша цель - самый быстрый результат или наименьшее использование памяти).
Или a switch
:
switch (action.toLowerCase()) {
case "john":
case "john beckham":
case "john henry":
case "giggs john":
case "scholes john":
case "john messi":
// Do something
}
Или поиск объекта:
var actions = {
"john": true,
"john beckham": true,
"john henry": true,
"giggs john": true,
"scholes john": true,
"john messi": true
};
if (actions[action.toLowerCase()]) {
// do something
}
(Это также имеет преимущество, позволяя вам сказать, что делать — например, true
можно заменить на вызываемую вами функцию.)
Или (в среде с поддержкой ES5 или с помощью прокладки ES5) Array#indexOf
:
if (["john", "john beckham", "john henry", "giggs john", "scholes john", "john messi"].indexOf(action.toLowerCase()) !== -1 {
// Do something
}
или, поскольку вы используете jQuery, вы можете избежать прокладки старых браузеров, используя inArray
:
if ($.inArray(action.toLowerCase(), ["john", "john beckham", "john henry", "giggs john", "scholes john", "john messi"]) !== -1) {
// Do something
}