在for循环

时间:2017-03-11 18:51:30

标签: javascript variables for-loop

我正在尝试在循环中创建多个新变量。 新变量的数量取决于另一个变量的长度(变量" list"在下面使用)。

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

我在StackOverflow上发现了许多非常类似的问题,答案主要是使用数组(即How do I create dynamic variable names inside a loop?)。

如果我使用建议的解决方案,我是否要创建一个变量数组?所以在我的情况下,我将创建多个计数器,然后我可以为这些变量添加值,即:

counter6++;

如果不是这样,我该如何解决这个问题?

我为要求你解释一个旧的答案而道歉,但由于声誉不佳,我不能在旧答案中发表评论。

2 个答案:

答案 0 :(得分:3)

你有一些选择:

创建全局(非最佳实践):

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

使用对象:

var scope = {};
for(var i = 0; i < list.lenght; i++){ 
  scope['counter' + i] = 0;   // create scope.counter1, scope.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 = new Array(list.length);

答案 1 :(得分:3)

您可以创建一个对象,将属性名称设置为预期的变量名称,然后使用对象解构赋值来获取具有.length作为变量标识符的对象的属性赋值或索引;或使用数组解构为标识索引指定标识符。

&#13;
&#13;
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);
&#13;
&#13;
&#13;

可选地

&#13;
&#13;
let list  = "abc";

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

console.log(counter0, counter1, counter2);
&#13;
&#13;
&#13;

&#13;
&#13;
let list  = ["a","b","c"];

let [counter0, counter1, counter2] = list;

console.log(counter0, counter1, counter2);
&#13;
&#13;
&#13;