2016-04-29 11 views
2

私は2つの配列と整数を持っていると言います。番号に基づいて複数の配列に書き込む方法は?

var int = 1; //or 0 depending on other circumstances 
var ar0 = [0] 
var ar1= [1] 

書き込む配列を決定するために整数を使用する方法はありますか?同様のint = 1ならば、私は正しい配列を選ぶだろう

'ar'+ int 

の線に沿って何かを持っているだろうか?あるいは、if文がたくさん必要ですか? 私は私に与えられた番号で編集する必要がある配列を特定して編集できるようにしたいと思います。

+2

可能な複製を[文字列を変換します変数名のJavascript](http://stackoverflow.com/questions/5613834/convert-string-to-variable-name-in-javascript) – Leeish

答えて

4

あなたがしようとしているのは、環境を設定することです。しかし、JavaScript内のVariable Environmentという名前の変数には、'ar' + intなどの名前でアクセスすることはできません。 window['ar'+int]を使用することで可能なグローバルスコープにある場合、これは悪い習慣であり、変数がグローバルであることも前提としています。

あなたがすべきことは、それらをオブジェクトにラップし、そのオブジェクト内の参照を使用して配列を見つけることです。

var int = 1; 
var environmentObject = {}; 
environmentObject['ar0'] = [0];//string notation assignment example 
environmentObject.ar1 = [1];//dot notation assignment example 

、今、あなたは簡単に名前で

var myarr = environmentObject[`ar`+int]; 
0

をあなたの配列にアクセスすることができますあなたはeval

var int = 1; 

var ar0 = [0]; 
var ar1 = [1]; 

eval('ar' + int).push(2); 

console.log(ar1); // 1, 2 

を使用することができます。しかし、それは、悪い習慣です。

if(int) { // 0 is falsy, 1 is truth 
    ar1.push(...); 
} else { 
    ar0.push(...); 
} 

あるいは言及したようOriolは、ternary演算子使用して:あなたは2つのだけの整数がある場合は、あなたのケースでは、(0、1)より良いifの文を使用するの

(int ? ar1 : ar0).push(...); 
+0

または '(int?ar1:ar2).push(...)' – Oriol

関連する問題