ReplaceAll in JavaScript per il ciclo è troppo lento, cercando un approccio alternativo

0

Domanda

Sto facendo un estensione per il browser che sostituisce tutti profano parole su un sito web con ***. Ora, ho un enorme JS array con tutte le profano parole (2k+ parole).
Sto usando un ciclo per ciclo su ogni parola nella profaneWords array e sostituire ogni istanza di una parola corrispondente con ***:

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

Con questo, ci vogliono circa 5 minuti per il mio browser per cercare e sostituire tutte le istanze di tutti profano parole su un sito web, con ***. Ma, prima di fare la mappatura sulle parole, non vengono apportate modifiche per il sito web. Così, per 5 minuti, sembra che nulla stia accadendo.

Ho provato questo metodo con un altro array che era molto più piccola (10 parole) e la sostituzione è stata quasi immediata.

C'è un modo migliore che ho potuto fare per realizzare questo per il mio array con più di 2000 elementi?

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

Migliore risposta

1

Avete considerato la possibilità di usare le 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

Ora solo pregare che il sito web non fa uso di quello che è considerato un "profano" di parola nel suo markup. Classi, Id, nomi di file, magari anche il codice effettivo può cadere vittima di questa sostituzione e distruggere il funzionamento del sito nel processo
VLAZ

In altre lingue

Questa pagina è in altre lingue

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