JavaScript: Jangan pakai replaceAll

25 January 2022

Daripada menggunakan replaceAll, lebih baik menggunakan replace. Tetapi kenapa? Bukankah replace hanya mengganti karakter/kalimat pertama yang ditemukan?

Konteks bahasan kita kali ini adalah replace & replaceAll yang merupakan built-in function/method untuk String di bahasa JavaScript.

Sebelumnya mari lihat penggunaanya

const kalimat = 'Kita akan membuka toko. Kita akan menjual kebab' 

// replaceAll
const kalimatReplacedAll = kalimat.replaceAll('Kita', 'Saya')

// replace
const kalimatReplaced = kalimat.replace('Kita', 'Saya')

console.table({
  kalimat,
  kalimatReplacedAll,
  kalimatReplaced,
})

Kode di atas akan mengeluarkan pesan berikut

(index) Value
kalimat 'Kita akan membuka toko. Kita akan menjual kebab'
kalimatReplacedAll 'Saya akan membuka toko. Saya akan menjual kebab'
kalimatReplaced 'Saya akan membuka toko. Kita akan menjual kebab'
  • replace & replaceAll tidak mengubah nilai, melainkan mengembalikan perubahan nilai.

    Karenanya kita harus menampung perubahan ke dalam variable baru.

  • replaceAll mengubah semua temuan, sedangkan replace hanya mengubah temuan pertama.

Masalah

Lantas kenapa? Masalahnya ada pada compatibilitas

Adapun masalah yang mungkin terjadi adalah Runtime Error pada beberapa device/browser lama.

Khususunya bagi teman-teman yang develop webview app, ini perlu jadi perhatian.

Solusi

Gunakan replace. Bila ingin mengganti semua temuan, gunakan Regular Expression dengan replace, seperti berikut

const kalimatReplacedNew = kalimat.replace(/Kita/g, 'Saya')
console.log(kalimatReplacedNew) // 'Saya akan membuka toko. Saya akan menjual kebab'

Okay terima kasih.

Sumber