Javascript Замена с разрушением объекта - PullRequest
1 голос
/ 04 февраля 2020

У меня есть переменная, как показано ниже:

var temp = 'Hello world {variable1}. It is just a {variable2}';

И у меня есть объект, как показано ниже:

var object = {variable1: 12, variable2: 15, variable3: 20 ...};

В результате я хочу заменить временные данные переменными объекта. temp.replace (object ...)

Может быть решен с помощью

Object.keys(object).forEach(o => temp.replace(o, object[o])); 

Есть ли более практичный способ?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2020

Вы можете взять функцию для замены и передать ключ для получения значения.

var temp = 'Hello world {variable1}. It is just a {variable2}',
    object = { variable1: 12, variable2: 15, variable3: 20 },
    rendered = temp.replace(/\{([^\}]+)\}/g, (_, k) => object[k]);

console.log(rendered);
1 голос
/ 04 февраля 2020

String.prototype.replace может заменить спички функцией. Вы можете заменить все {...} на это, например:

temp.replace(/\{([^}]+)\}/g, (_, match) => object[match]);

Возможно, вы захотите совпадать только по классам символов, чтобы не допустить { with spaces or *strange* things_here! } (но JS может разрешить любой тип строки)

0 голосов
/ 04 февраля 2020

В зависимости от того, будет ли ваша переменная temp всегда иметь динамическое c число variables и если вы пытаетесь просто получить все значения в объекте.

Вы можете сделать что-то вроде этого используя деструктуризацию и строковые литералы, если вы знаете, что именно в object

const {variable1, variable2, variable3} = object
var temp = `Hello world ${variable1}. It is just a ${variable2}.`

console.log(temp) \\ "Hello world 12. It is just a 15"
...