Toții în JavaScript pentru bucla este prea lent, în căutarea pentru o abordare alternativă

0

Problema

Fac o extensie de browser care înlocuiește toate profan cuvinte pe un site cu ***. Acum, am o mare JS matrice cu toate cuvinte profane (2k+ cuvinte).
Sunt folosind-o pentru bucla la bucla peste fiecare cuvânt în profaneWords matrice și înlocuiți orice exemplu de un cuvânt de potrivire cu ***:

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

Cu aceasta, este nevoie de aproximativ 5 minute pentru browser-ul meu pentru a căuta și înlocui toate instanțele toate profan cuvinte pe un site, cu ***. Dar, înainte de a se face de cartografiere peste cuvinte, nu se vor face modificări la site-ul web. Deci, pentru 5 minute, se pare că nu se întâmplă nimic.

Am testat această metodă cu o altă matrice care a fost mult mai mică (10 cuvinte) și înlocuirea a fost aproape instantanee.

Există o modalitate mai bună am putea merge despre punere în aplicare pentru matrice cu peste 2000 de elemente?

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

Cel mai bun răspuns

1

Te-ai gândit folosind 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

Acum roagă-te ca site-ul nu folosește nimic considerat un "profan cuvântul" în marcaj. Clase, Id-uri, nume de fișiere, poate chiar codul actual, toate pot cădea victimă la această înlocuire și de a distruge cât un site funcționează în procesul
VLAZ

În alte limbi

Această pagină este în alte limbi

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