Как динамически создавать переменные JavaScript из массива?
допустим у меня есть массив имен для переменной:
var varNames = new Array("name1","name2","name3");
как создать var name1
, var name2
и var name3
просто петля через varNames
массив?
3 ответов
Это позволит создать глобальные переменные (в глобальном пространстве имен, т. е. window
).
var varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
window[varNames[i]] = 0;
}
name1; //=> 0
поскольку использование глобальных переменных считается плохой практикой, вы можете создавать переменные в объекте custum:
var myVariables = {}
,varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
myVariables[varNames[i]] = 0;
}
myVariables.name1; //=> 0
изменить 2017
использование es≥6:
const [v1, v2, v3] = ["name1","name2","name3"];
console.log(v1); // => name1
вы можете сделать это следующим образом. Я добавил оповещения, чтобы доказать, что вы можете установить значение для этих переменных.
var varNames = new Array("name1","name2","name3");
for(var i = 0; i < varNames.length; i++) {
window[varNames[i]] = i;
}
alert("name1: " + name1);
alert("name2: " + name2);
alert("name3: " + name3);
прямой ответ на ваш вопрос будет - вы можете сделать это с помощью eval
:
var varNames = new Array("name1","name2","name3");
for (var i=0; i<varNames.length; i++) {
var varName = varNames[i];
eval("var "+varName); // would be "var name1"
}
обратите внимание, хотя это считается плохой практикой, и обычно нет никаких оснований для использования eval для такого случая. Также обратите внимание, что чаще всего создается массив, используя следующий стиль:
var varNames = ["name1", "name2", "name3"];