【问题标题】: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)
【解决方案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);