2010-05-24 6 views
5

Je cherche un moyen de créer dynamiquement des variables javascriptComment créer des variables dynamiccally en JavaScript

par exemple

J'ai une boucle

for (i=0;i<15;i++){ 
} 

maintenant je dois créer des variables dynamiquement par exemple var "a" + i pour la valeur eavh dans la boucle. Est-ce possible et comment?

+2

Pouvez-vous utiliser un tableau? 'var tableau = []; pour (i = 0; i <15; i ++) {array [i] = ...} '? –

+0

Array est le candidat le plus approprié ici. Il est imprudent d'utiliser beaucoup de telles variables en Javascript. – Kangkan

Répondre

9

Étant donné que vous utilisez des variables numériques séquentielles, utilisez un tableau.

var foo = []; 
for (var i = 0; i < 15; i++) { 
    foo[i] = something; 
} 
4

Pour répondre à vos besoins précis, je sais que eval():

eval("varname"+i+" = 'Hello';"); 

d'autre part, vous pourriez envisager d'utiliser un tableau. Beaucoup plus propre: Ils n'encombrent pas l'espace de nom global, et vous pouvez ordonner les variables soigneusement dans les groupes.

arrayname[i] = value; 
1

Il serait imprudent de polluer votre espace de noms avec un si grand nombre de variables. Utilisez un tableau à la place.

1

Vous pouvez utiliser la fonction eval mal à cet effet:

for (var i=0; i < 15; i++){ 
    eval('var a' + i + ' = "something"'); 
} 
1

window représente la plupart du temps l'objet global sur les navigateurs. Vous pouvez utiliser cela ou l'étendre à vos propres objets.

var my = {}; 

for(var i = 0; i < 15; i++) { 
    my["a" + i] = "value: " + i; 
} 

console.log(my.a4); // "value: 4" 
8

Si nous présumons que vous aurez besoin de plusieurs variables liées à chaque itération ([foo1, bar1], [foo2, bar2] ...) alors il y a deux approches

utiliser des tableaux

var foo = [], bar = []; 
foo[1] = "foo"; 
bar[1] = "bar"; 

Utilisez un objet

var myVars = {}; 
myVars["foo" + 1] = "foo"; 
myVars["bar" + 1] = "bar"; 
comme certains a suggéré

Ce dernier pourrait aussi être écrit comme

myVars.bar1 = "bar"; 

Ne pas utilisation eval.

+0

+1 pour les objets mentioing et fournissant de beaux exemples propres. –

+0

+1 pour dire que eval est diabolique – nemesisdesign

+0

@nemesisdesign Je n'ai pas dit que c'était diabolique, juste que ça n'appartient pas à ce cas d'utilisation. 'eval' n'est que 'mal' s'il est mal utilisé, alors n'écoutez pas tout ce que dit le Crock .. –

1

Je considérerais utiliser array au lieu des variables. Array a push méthode qui ajoute un nouvel élément à tableau.

Questions connexes