ReplaceAll em JavaScript para o loop é muito lento, procurando uma abordagem alternativa

0

Pergunta

Eu estou fazendo uma extensão do navegador que substitui todas as palavras profanas em um site com ***. Agora, eu tenho uma enorme JS array com todas as palavras profanas (2k+ palavras).
Eu estou usando um loop for para fazer um loop através de cada palavra no profaneWords matriz e substituir todas as ocorrências de uma palavra correspondente com ***:

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

Com isso, ele leva cerca de 5 minutos para o meu navegador para procurar e substituir todas as ocorrências de todas as palavras profanas em um site, com ***. Mas, antes de ser feito o mapeamento sobre as palavras, as alterações não são feitas para o site. Assim, por 5 minutos, parece que nada está acontecendo.

Eu testei este método com outra matriz que foi muito menor (10 palavras) e a substituição foi quase que instantânea.

Existe uma melhor maneira que eu poderia ir sobre como implementar esta para minha matriz, com mais de 2000 elementos?

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

Melhor resposta

1

Já considerou usando 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

Agora é só rezar para que o website não usa qualquer coisa considerada um "profano palavra" em sua marcação. Classes, IDs, nomes de arquivo, talvez até mesmo código pode cair todos os vítima para que esta substituição e destruir como um site funciona no processo
VLAZ

Em outros idiomas

Esta página está em outros idiomas

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