Wymienić wszystkie w JavaScript na cykl zbyt wolno, poszukujemy alternatywne podejście

0

Pytanie

Tworzę rozszerzenie przeglądarki, która zastępuje wszystkie niecenzuralne słowa na stronie ***. Teraz mam ogromny wachlarz JS ze wszystkimi нецензурными słowy (2 tys.+ słowa).
Używam pętli for dla krach każdego słowa w profaneWords tablica i zastąpić wszystkie wystąpienia danego słowa w ***:

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

Przy tym mojej przeglądarki zajmuje około 5 minut, aby znaleźć i zastąpić wszystkie wystąpienia wszystkich niecenzuralnych słów na stronie, z ***. Ale do tego, jak będzie wykonana zestawienie słów, na stronie internetowej nie wprowadzono żadnych zmian. Tak, że w ciągu 5 minut wydaje się, że nic się nie dzieje.

Ja testowałem tej metody z inną tablicą, który był znacznie mniejszy (10 słów), a wymiana była prawie natychmiastowa.

Czy jest lepszy sposób, aby zrealizować to dla mojego tablicy z ponad 2000 elementów?

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

Najlepsza odpowiedź

1

Czy rozważali możliwość korzystania z wyrażeń regularnych?

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

Teraz tylko modlić się, aby strona nie użył w swojej znaczników nic, co jest uważane za "niecenzuralną słowem". Klasy, identyfikatory, nazwy plików, może nawet rzeczywisty kod-wszystko to może stać się ofiarą tej wymiany i zniszczyć pracę serwisu w procesie
VLAZ

W innych językach

Ta strona jest w innych językach

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