【问题标题】:Create multiple variables inside for loop在 for 循环中创建多个变量
【发布时间】:2017-03-19 18:58:57
【问题描述】:

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

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++;

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

我很抱歉要求您解释一个旧答案,但由于声誉低,我无法对旧答案发表评论。

【问题讨论】:

  • 那票对你的 50 个代表进行排序 ;)
  • 应该给动态创建的变量赋值吗?
  • 您将如何处理新创建的变量?你会怎么称呼他们?
  • 您不会创建“变量数组”。您创建了一个值数组,与欺骗中的答案完全相同。
  • @user2375263:是的,你会写counter6++而不是counter[6]++

标签: javascript variables for-loop


【解决方案1】:

这里有一些选择:

全局创建它们(不是最佳实践):

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);

【讨论】:

    【解决方案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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多