Как добавить переменную в другую переменную в JavaScript?
Я запускаю цикл и пытаюсь создать переменную каждый раз, когда цикл запускается с номером счетчика, добавленным в конец имени переменной.
Вот мой код:
var counter = 1;
while(counter < 4) {
var name+counter = 5;
counter++;
}
Поэтому после выполнения цикла должно быть 3 переменные с именами name1, name2 и name3. Как я могу добавить номер счетчика в конец переменной, которую я создаю в цикле?
8 ответов
Вы ищете массив:
var names = Array();
// ...
names[counter] = 5;
Затем вы получите три переменные с именами names[0], names[1] и names[2]. Обратите внимание, что традиционно начинать с 0, а не с 1.
Вы можете использовать ассоциативные массивы,
var mycount=new Array();
var count=1;
while (count < 4) {
mycount[count++]=5;
}
Используйте массив.
Предположим, вы работаете в браузере и nameXXX
являются глобальными переменными, используйте
window["name" + counter] = 5;
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']);
Если вы используете eval, не используйте его внутри цикла, но используйте цикл для создания единственной строки, на которой вы можете запустить 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- действительно сложно оптимизировать эти изящные новые движки javascript с помощью eval, и я уверен, что эти программисты хотели бы, чтобы он умер, или, по крайней мере, урезал его сферу.
Если вы настаиваете на глобальных переменных, вы можете сделать это:
var counter= 1, name= 'name';
while(counter < 5){
window[name+counter]=5;
++counter;
}
alert(name3)
Пример кода, он создаст переменные name1,name2, name3.
var count=1;
while ( count < 4 )
{
eval("var name" + count + "=5;");
count++;
}
alert ( name1 ) ;
alert ( name2 ) ;
alert ( name3 ) ;
Попробуй это:
var counter = 1;
while(counter < 4) {
eval('name' + counter + ' = ' + counter);
counter++;
}
alert(name1);