Требования исходного вопроса явно не могут выиграть от интерполяции строк, так как кажется, что это обработка произвольных ключей замены во время выполнения.
Однако , если вам просто нужно было выполнить интерполяцию строк, вы можете использовать:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Обратите внимание на разделительные знаки, разделяющие строку, они обязательны.
Для ответа, отвечающего требованиям конкретного ОП, вы можете использовать String.prototype.replace()
для замены.
Следующий код будет обрабатывать все совпадения и не затрагивать их без замены (если ваши значения замены - это все строки, если нет, см. Ниже).
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 .
Если некоторые из ваших замен не являются строками, сначала убедитесь, что они существуют в объекте. Если у вас есть формат, подобный примеру, то есть, заключенный в знаки процента, вы можете использовать оператор in
для достижения этой цели.
jsFiddle .
Однако, если ваш формат не имеет специального формата, т. Е. Какой-либо строки, а ваш объект-заменитель не имеет прототипа null
, используйте Object.prototype.hasOwnProperty()
, если только вы не можете гарантировать, что ни одна из ваших потенциальных замененных подстрок не будет будет конфликтовать с именами свойств в прототипе.
jsFiddle .
В противном случае, если ваша замещающая строка будет 'hasOwnProperty'
, вы получите результирующую испорченную строку.
jsFiddle .
В качестве дополнительного примечания вас должны называть replacements
Object
, а не Array
.