2016-04-14 11 views
0

でメソッド名を変更:が動的に私は次のコードを持っているのJavaScript

headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST1); 
headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST2); 
headerCaptions.push(localization.SCREEN_EPISODE_INITIATION_HEADER_REQUEST3); 

headerCaptionsは配列です。 localizationオブジェクトには文字列値が含まれています。

私はこれを動的に生成したいと思います。つまり、繰り返し回数を1回増やすことで、オブジェクトパラメータの数がx倍に増加します。例えば、4を作ると、最終メソッド呼び出しはSCREEN_EPISODE_INITIATION_HEADER_REQUEST4となります。

vanilla jsまたは新しいES6の構文を使用してもよろしいですか? JavaScriptオブジェクトの属性にアクセスすることができますいずれかobject.propertyまたはobject['property']を呼び出すことによって、我々はプログラム的に操作することにより、関心のあるlocationの属性にアクセスすることができますので

const n = 4; 
for (let i = 0; i < n; i++) { 
    headerCaptions.push(localization[`SCREEN_EPISODE_INITIATION_HEADER_REQUEST${i}`]) 
} 

:ES6の構文を使用して

+2

「headerCaptions.push(ローカリゼーション)」のようなものを探しているようです(https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Property_accessors) ['SCREEN_EPISODE_INITIATION_HEADER_REQUEST' + i]; '。 – RobG

+3

質問のタイトルはどのようにあなたの質問の本文に関連していますか? – void

答えて

1

、あなたはこのような何かを呼び出すことができます文字列。

``構文を使用すると、JavaScriptで${}

1

によってそれを囲むことにより、文字列に計算された値/変数を挿入することができ、文字列補間を使用して、あなたが使用していたドットシンタックス(いずれかを使用して、オブジェクトのプロパティにアクセスすることができますあなたの例)、またはこのように見えるサブストリング構文、中:

headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST1"]); 

角括弧は、単なる文字列が含まれているので、それが動的に生成することが可能です。

headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST" + i]); 

これで、番号をループするだけで済みます。

var i = 1; 
var il = 4; 
while (i < il) { 

    headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST" + i]); 
    i += 1; 

} 
2

あなたはこのような変数を使用するために、オブジェクトにブラケット表記を使用することができます。

headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST'+i]); 

次にあなたがループを使用することができます:構文a.bが同等である

for(var i = 0; i < 3; i++) { 
    headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST'+i]); 
} 
0
for(var i=0; i<5; i++){ 

    if(!localization.hasOwnProperty("SCREEN_EPISODE_INITIATION_HEADER_REQUEST"+i)) 
     break; 

    headerCaptions.push(localization["SCREEN_EPISODE_INITIATION_HEADER_REQUEST"+i); 

} 
0

a['b']に変更してください。

for(var i = 1; i <= n; i++) { 
    headerCaptions.push(localization['SCREEN_EPISODE_INITIATION_HEADER_REQUEST' + i]); 
} 

ただし、これらの値を配列に格納する方がよい場合があります。

関連する問題