Как добавить переменную в другую переменную в 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 ) ;

Используйте функцию eval, она сделает все

Попробуй это:

var counter = 1;

while(counter < 4) {
   eval('name' + counter + ' = ' + counter);
   counter++;
}

alert(name1);
Другие вопросы по тегам