(() => {
const fields = [
{
name: 'Car',
options: {
min: 'Audi',
max: 'Big Toyota',
}
},
{
name: 'name',
options: {
min: 'Иван',
max: 'Алексей Иванович',
}
}
];
const origStr = 'Привет, меня зовут {{name}}! У меня есть машина {{car}}';
const replaceKeysToText = (str, optionsKey) =>
str.replace(/\{\{\s*(\w+)\s*\}\}/g, (fullMatch, key) => {
const field = fields.find((f) => f.name.toLowerCase() === key);
if(!field) {
return fullMatch;
}
return field.options[optionsKey];
});
const short = replaceKeysToText(origStr, 'min');
const long = replaceKeysToText(origStr, 'max');
return [short, long];
})()