Требования исходного вопроса явно не могли выиграть от интерполяции строк, поскольку кажется, что это обработка произвольных ключей замены во время выполнения.
Однако , если вам просто нужно было выполнить интерполяцию строк, вы можете использовать:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Обратите внимание на обратные кавычки, ограничивающие строку, они обязательны.
Для ответа, соответствующего конкретным требованиям OP, вы можете использовать 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
an Object
, а не Array
.