Нужно заменить в строке все вхождения "ключевых слов" на соответствующие им поля объекта. "Ключевое слово" всегда начинается с # (если необходимо, может и заканчиваться этим символом), само слово полностью соответствует имени поля.
var html = '<span class = "#class">#text</span>';
var obj = {
class: 'class1',
text: 'Span Text'
};
Подскажите, как это можно было бы реализовать.
Для решения, можно воспользоваться заменой по регулярному выражению. Для этого у строк есть метод .replace
Регулярное выражение может быть следующим: #(\w+) - выбирается подстрока начинающаяся с # и в которую входят символы из набора: A-Za-z0-9_.
Вторым параметром, .replace может принимать функцию подстановки, параметрами, которой являются найденные подстроки и указанные группы.
Функция может выглядеть так:
function(_, $1) { // первый параметр не важен, во втором приходит содержимое группы, а именно "class" или "text" из примера, без #
return obj[$1] || $1; // если есть поле в объекте возвращаем значение, иначе оставляем как есть
}
Пример в сборе:
var html = '<span class = "#class">#text</span>';
var obj = {
class: 'class1',
text: 'Span Text'
};
console.log(html.replace(/#(\w+)/g, function(_, $1) {
return obj[$1] || $1;
}))
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости