首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用json对象替换动态字符串模板变量

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

Stack Overflow用户
提问于 2017-03-06 11:15:51
回答 4查看 4.3K关注 0票数 2

我有像下面这样的样本模板我想用json对象值替换学校,babydet.name,部门,babydet.section.secname如何做到这一点,请帮助我解决这个问题。

代码语言:javascript
复制
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'}}}];

借助字符串替换需要实现这一点(单逻辑)。输出想要这样的“欢迎来到这个世界,宝贝香客”

EN

回答 4

Stack Overflow用户

发布于 2017-03-06 11:31:48

如果lodash.js可用,您可以对其使用_.template函数。更多细节here

代码语言:javascript
复制
var Template1 = 'Welcome to the {{school}} baby {{babydet.name}}'
var Template2 = 'Welcome to the school {{school}} department {{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 interpolator = _.template(Template1);
var interpolated = interpolator(namelist2[0]);

console.log(interpolated)

interpolator = _.template(Template2);
interpolated = interpolator(namelist2[0]);

console.log(interpolated)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

票数 3
EN

Stack Overflow用户

发布于 2017-03-06 11:33:41

您可以使用ES6 Template literals对字符串进行插值。为了只回答您提出的问题,我将做一些基本假设(并在本例中对它们进行硬编码):您的JSON是从namelist数据解析的某个对象的替代变量,您知道它的结构,并且您知道如何迭代数据数组以使此解决方案在现实世界中有用。

模板文字用反引号"" instead of quotes, and you surround your variables with${/ reference variable /}`“括起来

代码语言:javascript
复制
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}`;
票数 0
EN

Stack Overflow用户

发布于 2017-03-06 12:12:34

你可以使用这个库来进行字符串插值。https://www.npmjs.com/package/string-format.String::format是一个用于格式化字符串的小型JavaScript库,它基于Python的str.format()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42616982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档