ReplaceAll en JavaScript pour la boucle est trop lent, à la recherche d'une approche différente

0

La question

Je suis en train de faire une extension de navigateur qui remplace toutes les profanes mots sur un site web avec ***. Maintenant, j'ai un énorme JS tableau avec tous les profanes mots (2k+ mots).
Je suis à l'aide d'une boucle for pour parcourir une boucle sur chaque mot dans le profaneWords tableau et remplacer toute occurrence d'un mot correspondant avec ***:

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

Avec cela, il faut environ 5 minutes pour mon navigateur pour rechercher et remplacer toutes les instances de tous les profanes mots sur un site web, avec ***. Mais, avant qu'il se fait de la cartographie sur les mots, pas de modifications sont apportées au site web. Donc, pour les 5 minutes, il semble que rien ne se passe.

J'ai testé cette méthode avec un autre tableau qui était beaucoup plus petite (10 mots) et le remplacement a été presque instantanée.

Est-il mieux que j'ai pu mettre en place pour mon tableau avec plus de 2000 éléments?

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

La meilleure réponse

1

Avez-vous envisagé d'utiliser 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

Maintenant, juste prier pour que le site web ne pas utiliser quoi que ce soit considéré comme un "profane mot" dans son marquage. Classes, Id, noms de fichier, peut-être même code peuvent tous être victime de ce remplacement et de détruire le fonctionnement du site dans le processus de
VLAZ

Dans d'autres langues

Cette page est dans d'autres langues

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