Muhammad Raheel
Muhammad Raheel

Reputation: 19882

Replace keys in template string with object properties

I have an object like this.

var obj = {Id:1,Rate:5,Price:200,Name:"History"}

And a template like this.

var templateString = '<option id="{Id}">{Name}</option>'

I want to replace the template values with object values. How can i do this. I am no expert of javascript regular expressions.

The desired output

var optionString = '<option id="1">History</option>'

Fiddle Sample

Upvotes: 6

Views: 4231

Answers (3)

Adrita Sharma
Adrita Sharma

Reputation: 22203

Without using regex, this can be done by finding all the properties of the object using Object.keys and then replace each of them by it's value.

Try like this:

Object.keys(obj).forEach(key => {
  templateString = templateString.replace(`**${key}**`, `"${obj[key]}"`);
});

Upvotes: 1

Mritunjay
Mritunjay

Reputation: 25892

Just this will work for you if it has just one occurrence

var optionString = templateString.replace('{Id}',obj.Id).replace('{Name}',obj.Name)

Upvotes: 0

Denys S&#233;guret
Denys S&#233;guret

Reputation: 382404

You can use replace with a callback :

var optionString = templateString.replace(/{(\w+)}/g, function(_,k){
      return obj[k];
});

Demonstration

Upvotes: 22

Related Questions