Заменить все в JavaScript на цикл слишком медленно, ищем альтернативный подход

0

Вопрос

Я создаю расширение для браузера, которое заменяет все нецензурные слова на веб-сайте ***. Прямо сейчас у меня есть огромный массив JS со всеми нецензурными словами (2 тыс.+ слов).
Я использую цикл for для перебора каждого слова в profaneWords массив и замените любой экземпляр соответствующего слова на ***:

    for (let i = 0; i < profaneWords.length; i++) {
      let element = profaneWords[i];
      document.body.innerHTML = document.body.innerHTML.replaceAll(
        element,
        "***"
      );
    }

При этом моему браузеру требуется около 5 минут для поиска и замены всех экземпляров всех нецензурных слов на веб-сайте, с ***. Но до того, как будет выполнено сопоставление слов, на веб-сайте не будет внесено никаких изменений. Так что в течение 5 минут кажется, что ничего не происходит.

Я протестировал этот метод с другим массивом, который был намного меньше (10 слов), и замена была почти мгновенной.

Есть ли лучший способ реализовать это для моего массива с более чем 2000 элементами?

arrays for-loop javascript replace
2021-11-24 06:34:46
1

Лучший ответ

1

Вы рассматривали возможность использования регулярного выражения?

const str = 'Waiting on ass, asset , and tit titillation, ass.';
const profaneWords = ['ass', 'tit'];


const regex = new RegExp('\\b'+profaneWords.join('\\b|\\b')+'\\b', 'g');
var newstr =  str.replace(regex, '***');
console.log(newstr);

2021-11-24 08:26:43

Теперь просто молитесь, чтобы веб-сайт не использовал в своей разметке ничего, что считается "нецензурным словом". Классы, идентификаторы, имена файлов, возможно, даже фактический код-все это может стать жертвой этой замены и разрушить работу сайта в процессе
VLAZ

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории