Javascript 用json对象替换动态字符串模板变量
我有下面这样的示例模板,我想用json对象值替换school,babydet.name,dept,babydet.section.secname。如何做到这一点,请帮助我解决这个问题Javascript 用json对象替换动态字符串模板变量,javascript,node.js,Javascript,Node.js,我有下面这样的示例模板,我想用json对象值替换school,babydet.name,dept,babydet.section.secname。如何做到这一点,请帮助我解决这个问题 var Template1 = 'Welcome to the {{school}} baby {{babydet.name}}' var Template2 = 'Welcome to the school {{school}} department {{dept}} babydetails {{babydet.
var Template1 = 'Welcome to the {{school}} baby {{babydet.name}}'
var Template2 = 'Welcome to the school {{school}} department {{dept}} babydetails {{babydet.name}} {{babydet.section.secname}}'
const namelist1= [{school:'GOVSchool',babydet: { name: 'shanker' }}];
const namelist2= [{school:'GOVSchool',dept:'CS',babydet: { name: 'shanker',section:{sectname:'A Section'}}}];
在字符串替换的帮助下,需要实现这一点(单逻辑)。想要像这样的输出“欢迎来到世界宝贝香客”如果有机会可以使用lodash.js,您可以使用
\uuu.template
函数。更多细节
var Template1='欢迎来到{{{school}}婴儿{{{babydet.name}}'
var Template2='欢迎来到学校{{school}部门{{dept}}babydetails{{{babydet.name}}{{babydet.section.secname}
var namelist1=[{school:'GOVSchool',babydet:{name:'shanker'}}];
var namelist2=[{school:'GOVSchool',dept:'CS',babydet:{name:'shanker',section:{sectname:'A section'}}];
_.templateSettings.interpolate=/{{([\s\s]+?)}}/g;
var插值器=u0.template(Template1);
var插值=插值器(名称列表2[0]);
console.log(插值)
插值器=\模板(模板2);
插值=插值器(名称列表2[0]);
console.log(插值)
您可能会使用ES6插入字符串。为了只回答您提出的问题,我将做一些基本假设(本例中对其进行硬编码):您的namelist
vars是从JSON数据解析的某个对象的代理,您知道它的结构,并且您知道如何迭代数据数组以使此解决方案在现实世界中有用
模板文本用反勾“`”而不是引号括起来,变量周围用${/*reference variable*/}
const namelist1= [{school:'GOVSchool',babydet: { name: 'shanker' }}];
const namelist2= [{school:'GOVSchool',dept:'CS',babydet: { name: 'shanker',section:{sectname:'A Section'}}}];
let Template1 = `Welcome to the ${namelist1[0].school} baby ${namelist1[0].babydet.name}`;
let Template2 = `Welcome to the school ${namelist2[0].school} department ${namelist2[0].dept} babydetails ${namelist2[0].babydet.name} ${namelist2[0].babydet.section.sectname}`;
可以使用此库进行字符串插值。是一个用于格式化字符串的小型JavaScript库,基于Python的str.format() 我也在做类似的事情,唯一的区别是我的JSON对象没有嵌套属性 我使用的是一种简单的方法(希望不要太简单)。它可以接受HTML模板中要替换的任意数量的属性 给定一个模板:
let template =
'<div><span>{{ text }}</span><span>{{description}}</span></div>';
我会得到:
<div><span>My Text</span><span>my description</span></div>
我的文本我的描述
请参见JSBin中的实现:
更好的建议也欢迎 JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON。那些只是物体。
<div><span>My Text</span><span>my description</span></div>