


Выбор в зависимости от строки. Технологии будущего. Оптимизация структуры веб-страниц
Выбор в зависимости от строки
Точное соответствие и хэши
Итоговая таблица
Достаточно часто нам нужно выбрать одну из условных ветвей, основываясь на заданной строке. Обычно для этого используется либо методы объекта RegExp (exec, test), либо строковые методы (match, search, indexOf). Если нам нужно просто проверить соответствие строки какому-то регулярному выражению, то лучше всего для этого подойдет именно test:
var str = 'abc',
regexp = new RegExp('abc');
if (regexp.test(str)) {
...
}
Такая конструкция отработает на 40% быстрее, чем аналогичный exec:
if (regexp.exec(str)[1]) {
...
}
Строковый метод match аналогичен методу exec у создаваемого объекта RegExp, но работает на 10–15% быстрее в случае простых выражений. Однако метод search работает чуть медленнее (5–10%), чем test, потому что последний не возвращает найденную подстроку.
В том случае, если регулярное выражение требуется «на один раз», то подойдет более быстрая (примерно на 10% относительно варианта с инициализацией нового объекта) запись:
if (/abc/.test(str)) {
...
}
Если же, наконец, нам нужно проверить просто нахождение подстроки в заданной строке, то тут бесспорным лидером будет именно indexOf, который работает в 2 раза быстрее разбора регулярных выражений:
if (str.indexOf('abc') != 1) {
...
}