我有以下内容迭代“templateOverrides”数组。 DPGlobal.template
是我需要覆盖的原始模板。我的问题是我需要将g
标记传递到.replace()
行的var newTemplate = ...
方法。它正在工作,因为我能够一次一个地动态迭代并覆盖模板片段,但不传递g
标志。我主要想知道实现它的最干燥方法是什么......
for ( var i in templateOverrides ) {
var thisOverride = templateOverrides[i];
var origGlobalTemplate = DPGlobal[thisOverride];
var newTemplate = DPGlobal.template.replace(origGlobalTemplate, options[thisOverride]);
DPGlobal.template = newTemplate;
i++;
}
答案 0 :(得分:1)
如果您通过new RegExp()
声明,则可以将/g
修饰符作为第二个参数包含在构造函数中
var newTemplate = DPGlobal.template.replace(new RegExp(origGlobalTemplate,'g'), options[thisOverride]);
顺便说一下,templateOverrides
真的是Array []
,还是对象{}
?如果它是Array
,你应该使用增量for循环而不是for-in
构造,其目的是迭代对象属性。
for ( var i=0; i<templateOverrides.length; i++ ) {
var thisOverride = templateOverrides[i];
var origGlobalTemplate = DPGlobal[thisOverride];
var newTemplate = DPGlobal.template.replace(new RegExp(origGlobalTemplate,'g'), options[thisOverride]);
DPGlobal.template = newTemplate;
}