【问题标题】:How do I append a variable to another variable in JavaScript?如何在 JavaScript 中将变量附加到另一个变量?
【发布时间】:2011-01-24 09:52:26
【问题描述】:

我正在运行一个循环,并且我试图在每次循环运行时创建一个变量,并将计数器的编号附加到变量名的末尾。

这是我的代码:

var counter = 1;
while(counter < 4) {
  var name+counter = 5;
  counter++;
}

所以循环运行后应该有 3 个变量,分别命名为 name1、name2 和 name3。如何将计数器编号附加到我在循环中创建的变量的末尾?

【问题讨论】:

    标签: javascript loops append


    【解决方案1】:

    你正在寻找一个数组:

    var names = Array();
    // ...
    names[counter] = 5;
    

    然后你会得到三个变量,分别叫做names[0]、names[1]和names[2]。请注意,传统上是从 0 而不是 1 开始。

    【讨论】:

      【解决方案2】:

      你可以使用关联数组,

      var mycount=new Array();
      var count=1;
      while (count < 4) {
         mycount[count++]=5;
      }
      

      【讨论】:

        【解决方案3】:
        var counter = 1,
            obj = {};
        while ( counter < 4 )
          obj['name'+counter++] = 5;
        
        // obj now looks like this
        obj {
            name1: 5,
            name2: 5,
            name3: 5
        }
        
        // the values may now be accessed either way
        alert(obj.name1) && alert(obj['name2']);
        

        【讨论】:

          【解决方案4】:

          使用数组。


          假设您在浏览器中运行并且nameXXX 是全局变量,请使用

          window["name" + counter] = 5;
          

          【讨论】:

            【解决方案5】:

            如果你使用 eval,不要在循环内部使用它,而是使用循环构建单个字符串 你可以运行一次评估。

            var counter= 1, name= 'name', evlstring= 'var ';
            while(counter < 5){
                evlstring+= name+counter+'=5,';
                ++counter;
            }
            evlstring= evlstring.slice(0, -1);
            

            // 结尾的逗号会从 eval 中抛出错误

            eval(evlstring);
            
            alert(name3);
            

            我不太相信 eval 的未来—— 用eval优化那些漂亮的新javascript引擎真的很难, 而且我敢肯定那些程序员希望看到它死掉,或者至少让它的作用域被剪掉。

            如果你坚持使用全局变量,你可以这样做:

            var counter= 1, name= 'name';
            while(counter < 5){
                window[name+counter]=5;
                ++counter;
            }
            
            alert(name3)
            

            【讨论】:

              【解决方案6】:

              使用eval函数,它会做出来的东西

              【讨论】:

                【解决方案7】:

                示例代码,它将创建 name1 ,name2 , name3 变量。

                var count=1;
                while ( count < 4 )
                {
                eval("var name" + count + "=5;");
                count++;
                }
                
                alert ( name1 ) ;
                alert ( name2 ) ;
                alert ( name3 ) ;
                

                【讨论】:

                  【解决方案8】:

                  试试这个:

                  var counter = 1;
                  
                  while(counter < 4) {
                     eval('name' + counter + ' = ' + counter);
                     counter++;
                  }
                  
                  alert(name1);
                  

                  【讨论】:

                    猜你喜欢
                    • 2021-02-15
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-11-30
                    • 1970-01-01
                    • 2018-12-08
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-11-23
                    相关资源
                    最近更新 更多