Persyaratan dari pertanyaan asli jelas tidak bisa mendapatkan keuntungan dari interpolasi string, karena sepertinya ini adalah pemrosesan waktu proses dari kunci pengganti yang berubah-ubah.
Namun , jika Anda baru saja melakukan interpolasi string, Anda dapat menggunakan:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Perhatikan backticks yang membatasi string, itu diperlukan.
Untuk jawaban yang sesuai dengan kebutuhan OP tertentu, Anda dapat menggunakan String.prototype.replace()
untuk penggantian.
Kode berikut akan menangani semua kecocokan dan tidak menyentuh yang tanpa penggantinya (selama nilai penggantinya adalah semua string, jika tidak, lihat di bawah).
var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';
str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});
jsFiddle .
Jika beberapa pengganti Anda bukan string, pastikan mereka ada di objek terlebih dahulu. Jika Anda memiliki format seperti contoh, yaitu dibungkus dalam tanda persentase, Anda dapat menggunakan in
operator untuk melakukannya.
jsFiddle .
Namun, jika format Anda tidak memiliki format khusus, misalnya string apa pun, dan objek pengganti Anda tidak memiliki null
prototipe, gunakan Object.prototype.hasOwnProperty()
, kecuali Anda dapat menjamin bahwa tidak ada substring yang mungkin diganti yang akan bentrok dengan nama properti pada prototipe.
jsFiddle .
Jika tidak, jika string pengganti Anda adalah 'hasOwnProperty'
, Anda akan mendapatkan string yang kacau balau.
jsFiddle .
Sebagai catatan tambahan, Anda harus disebut replacements
an Object
, bukan Array
.