ReplaceAll v Javascriptu pro smyčce je příliš pomalý, hledá alternativní přístup

0

Otázka

Dělám rozšíření prohlížeče, které nahradí všechny světské slova na webové stránky s ***. Teď mám obrovskou JS pole s profánním slova (2k+ slova).
Já používám pro smyčky do smyčky přes každé slovo v profaneWords pole a nahradit všechny instance matching slovo s ***:

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

S tímto, to trvá asi 5 minut, pro můj prohlížeč pro vyhledávání a nahradit všechny instance všechny světské slova na webových stránkách, s ***. Ale předtím, než je provedeno mapování nad slovy, nejsou provedeny žádné změny na webových stránkách. Tak za 5 minut, vypadá to, že se nic neděje.

Testoval jsem tuto metodu s další pole, které bylo mnohem menší (10 slov) a výměna byla téměř okamžitá.

Existuje lepší způsob, jak bych mohl jít o provádění této pro řadu s více než 2000 prvků?

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

Nejlepší odpověď

1

Uvažovali jste o použití RegExp?

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

Teď se jen modlit, že webové stránky nebude používat něco považováno za "sprosté slovo" v jeho označení. Třídy, Id, názvy souborů, možná dokonce skutečný kód mohou všichni obětí tohoto výměna a zničit, jak web funguje v procesu
VLAZ

V jiných jazycích

Tato stránka je v jiných jazycích

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