2017-03-11 15 views
3

ループ内に複数の新しい変数を作成しようとしています。 新しい変数の数は、別の変数(以下で使用する変数 "list")の長さによって異なります。ループ内に複数の変数を作成する

for(var i = 0; i < list.lenght; i++) 
{ 
var counter + i; // create new variable (i.e. counter1, counter2,...) 
} 

私はStackOverflowの上の非常にsimmilar質問の多くを発見し、その答えは、ほとんどのアレイ(すなわちHow do I create dynamic variable names inside a loop?)を使用しています。

提案されたソリューションを使用する場合は、変数の配列を作成しますか?だから、私の場合、私は複数のカウンタを作成し、それは私が問題に取り組むことができるかでない場合、私は、その変数、すなわち:

counter6++; 

に値を追加することができますか?

古い回答を説明することをお詫びしますが、評判が低いため、古い回答にはコメントできません。

+0

そのupvoteは50人の担当者をソートします;) – mayersdesign

+0

動的に作成された変数に値を割り当てる必要がありますか? – guest271314

+0

新しい作成された変数ではどうしますか?どのようにそれらに対処しますか? –

答えて

2

あなたがここにいくつかのオプションがあります。

for(var i = 0; i < list.lenght; i++){ 
    window['counter' + i] = 0; // create counter1, counter2,...) 
} 

使用目的:withキーワード

var scope = {}; 
for(var i = 0; i < list.lenght; i++){ 
    scope['counter' + i] = 0; // create scope.counter1, scope.counter2,...) 
} 
with(scope){ 
// here you can acesess keys in the scope object like them variable on the function scope 
counter0++ 
} 

var scope = {}; 
for(var i = 0; i < list.lenght; i++){ 
    scope['counter' + i] = 0; // create scope.counter1, scope.counter2,...) 
} 

使用目的

は彼らにグローバル(ないのベストプラクティス)を作成します

使用昔ながらのアレイ

var scope = new Array(list.length); 
2

あなたは変数識別子として.lengthを持つオブジェクトのプロパティの割り当てまたはインデックスを取得するには、オブジェクト分割代入を使用し、その後、予想変数名にプロパティ名を設定するオブジェクトを作成することができます。特定のインデックスに識別子を割り当てるために配列の構造化を使用することができます。

let [list, obj] = ["abc", {}]; 
 

 
for (let i = 0; i < list.length; i++) { 
 
    obj["counter" + i] = list[i] 
 
} 
 

 
let {counter0, counter1, counter2} = obj; 
 

 
console.log(counter0, counter1, counter2);

あるいは

let list = "abc"; 
 

 
let {0:counter0, 1:counter1, 2:counter2} = list; 
 

 
console.log(counter0, counter1, counter2);

let list = ["a","b","c"]; 
 

 
let [counter0, counter1, counter2] = list; 
 

 
console.log(counter0, counter1, counter2);

関連する問題