2

「templateOverrides」の配列を反復処理する次のものがあります。 DPGlobal.templateオーバーライドする必要がある元のテンプレートです。私の問題は、行のメソッドにgフラグを渡す必要があることです。テンプレートピースを一度に1つずつ動的に反復してオーバーライドできる限りは機能していますが、フラグは渡されません。私は主にそれを達成するための最もDRYの方法が何であるか興味があります....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++;
}
4

1 に答える 1

1

を介して宣言すると、コンストラクターの 2 番目のパラメーターとして修飾子を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;
}
于 2012-10-09T15:17:16.433 に答える