@lexstile

Что быстрее отработает — регулярки или includes?

const handleChange = (e) => {
    const inputValue = e.target.value;
    setListOptions(options.filter(({ name }) => name.toLowerCase().includes(inputValue.toLowerCase())));
  };

или
const handleChange = (e) => {
    const inputValue = e.target.value;
    setListOptions(options.filter(({ name }) => new RegExp(inputValue, 'gi').test(name.toLowerCase())));
  };
  • Вопрос задан
  • 228 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
.indexOf(), если требуется быстрая проверка вхождения подстроки.
Ставим .toLowerCase() для всех строк перед всеми проверками ОДНОКРАТНО! и только потом начинаем делать все проверки.

Также, можно использовать "водопадный спуск", для нескольких последовательных проверок: сначала проверяем самые быстро работающие условия (или самые важные для принятия решения по логической "ветке"), затем самые медленно работающие условия.

С двумя .toLowerCase() (как сейчас в примере) крайне медленно, регулярка без создания объекта (через .test) должна явно быстрее сработать, если нужно проверять сразу несколько условий в окружении при проверке вхождения одной подстроки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Берёшь одно, второе, запускаешь, измеряешь время исполнения. Профит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы