ReplaceAll en JavaScript para el bucle es demasiado lento, buscando un enfoque alternativo

0

Pregunta

Estoy haciendo una extensión de navegador que sustituye a todos los profanos palabras en una página web ***. Ahora mismo, tengo un gran JS matriz con todos los profanos palabras (2k+ palabras).
Estoy usando un bucle for para recorrer cada palabra en el profaneWords matriz y reemplazar cualquier instancia de una palabra coincidente con ***:

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

Con esto, se tarda unos 5 minutos para que mi navegador para buscar y reemplazar todas las instancias de todos los profanos palabras en una página web, con ***. Pero, antes de que se realiza la asignación de las palabras, no se realizan cambios en el sitio web. Así que para los 5 minutos, parece que nada está sucediendo.

He probado este método con otra matriz que era mucho más pequeño (10 palabras) y el cambio fue casi instantánea.

Existe una mejor manera de ir sobre la ejecución de este para mi matriz, con más de 2000 elementos?

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

Mejor respuesta

1

Ha considerado el uso de 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

Ahora rezar para que el sitio web no utiliza nada que se considere un "profano de la palabra" en sus etiquetas. Clases, Códigos, nombres de archivo, tal vez incluso código real todos podemos ser víctimas de este reemplazo y destruir cómo un sitio que funciona en el proceso de
VLAZ

En otros idiomas

Esta página está en otros idiomas

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