Döngü için javascript'teki replaceAll çok yavaş, alternatif bir yaklaşım arıyor

0

Soru

Bir web sitesindeki tüm saygısız kelimelerin yerini alan bir tarayıcı uzantısı yapıyorum ***. Şu anda, tüm saygısız kelimelerle (2k+ kelime) büyük bir JS dizim var.
Her kelimenin üzerinde döngü yapmak için bir for döngüsü kullanıyorum. profaneWords dizi ve eşleşen bir sözcüğün herhangi bir örneğini şununla değiştirin: ***:

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

Bununla birlikte, tarayıcımın bir web sitesindeki tüm küfürlü kelimelerin tüm örneklerini araması ve değiştirmesi yaklaşık 5 dakika sürer. ***. Ancak, kelimeler üzerinde haritalama yapılmadan önce, web sitesinde herhangi bir değişiklik yapılmaz. Yani 5 dakika boyunca hiçbir şey olmuyor gibi görünüyor.

Bu yöntemi çok daha küçük (10 kelime) başka bir diziyle test ettim ve değiştirme neredeyse anında gerçekleşti.

2000'den fazla öğeyle dizim için bunu uygulamak için daha iyi bir yol var mı?

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

En iyi cevabı

1

RegExp kullanmayı düşündünüz mü?

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

Şimdi sadece dua eden bir web sitesi değil hiç bir şey kabul bir "küfür kelimesi" olarak işaretleme. Sınıflar, kimlikler, dosya adları, belki de gerçek kod bile bu değişikliğin kurbanı olabilir ve bir sitenin süreçte nasıl çalıştığını yok edebilir
VLAZ

Diğer dillerde

Bu sayfa diğer dillerde

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