Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用json对象替换动态字符串模板变量_Javascript_Node.js - Fatal编程技术网

Javascript 用json对象替换动态字符串模板变量

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.

我有下面这样的示例模板,我想用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.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>