@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())));
  };
  • Вопрос задан
  • 346 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
.indexOf(), если требуется быстрая проверка вхождения подстроки.
Ставим .toLowerCase() для всех строк перед всеми проверками ОДНОКРАТНО! и только потом начинаем делать все проверки.

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

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

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

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект