Reputation: 19882
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>'
Upvotes: 6
Views: 4231
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
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
Reputation: 382404
You can use replace
with a callback :
var optionString = templateString.replace(/{(\w+)}/g, function(_,k){
return obj[k];
});
Upvotes: 22