ReplaceAll v JavaScript pre slučky je príliš pomalý, hľadá alternatívny prístup

0

Otázka

Robím prehliadača rozšírenie, ktoré nahrádza všetky sprosté slová na webových stránkach s ***. Teraz budem mať obrovský JS pole so všetkými sprosté slová (2k+ slov).
Ja používam pre slučky slučka nad každým slovom v profaneWords pole a nahradiť akúkoľvek inštanciu vyhovujúce 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 minút, v mojom prehliadači hľadať a nahradiť všetky výskyty všetkých sprosté slová na webovej stránke, s ***. Ale pred tým, ako sa vykonáva mapovanie nad slovami, nie sú vykonané zmeny na webovej stránke. Tak na 5 minút, vyzerá to, že sa nič nedeje.

Som testoval túto metódu, iné pole, ktorá bola oveľa menšia (10 slov) a výmena bola takmer okamžité.

Existuje lepší spôsob, ako by som mohla ísť o implementácii to pre moje pole s viac ako 2000 prvky?

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

Najlepšiu odpoveď

1

Uvažovali ste 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

Teraz len modliť, že web nepoužíva nič považované za "sprosté slovo" vo svojej značky. Triedy, Id, názvy súborov, možno aj skutočný kód, môžete všetkých obetí tejto výmena a zničiť, ako stránka funguje v procese
VLAZ

V iných jazykoch

Táto stránka je v iných jazykoch

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