Définir le nom de la variable javascript à partir d'une variable

Bonjour, est-il possible de définir un nom var partir d'une autre variable?

Comme j'ai le var test avec des nombres différents chaque fois que la fonction est appelée, je souhaite que le numéro soit un nom de variable, par exemple, le test var contient '1', de sorte que la nouvelle variable serait var 1 . Je souhaite ensuite ajouter un mot à ce mot "mot" pour que la nouvelle variable devienne var 1word .

 var newNumber = 1; var newNumber += 'word'; ^ becomes ' 1 ' the new var name becomes ' 1word ' 

modifier:

 function getNumber(newNumber) // Gets a number, for this example say its the number '1' { var newNumber += "something"; //The new varaible will be named "1something" (something can be any word) } 

J'espère que je ne l'ai pas semblé trop déroutant, merci.

Vous pouvez mettre les variables dans un objet et indexer l'objet à l'aide de clés de chaîne.

Par exemple:

 var myData = { }; myData.x1 = 42; alert(myData["x" + 1]); 

Vous pouvez également initialiser l'objet en utilisant la notation d'objet:

 var myData = { key: 42 }; 

Tout dans Javascript est fondamentalement juste un tableau associatif. Cela signifie que vous pouvez utiliser la notation d'accès au tableau et la notation des points de façon plus ou moins interchangeable. La notation d'accès au tableau fournit la fonctionnalité que vous recherchez:

 object["name"]="foo" 

Définira une propriété de nom sur l'objet donné.

Si vous souhaitez créer une variable globale, utilisez l'objet fenêtre

 window["name"]="foo" 

Vous pouvez également utiliser une expression ou une variable dans les crochets

 window[someVaribale]="foo"; window["name_" + someVariable]="foo"; 

À mesure que je peux comprendre, vous souhaitez créer une variable nommée d'après le contenu d'une autre variable.

Je ne sais pas si vous pouvez le faire directement, mais vous pouvez le faire très peu à fond en utilisant des objets.

 var obj = new Object(); obj['original'] = 'name'; obj[obj]['original']] = 'another name'; 

L'objet a maintenant cette structure:

 { 'original': "name", 'name': "another name" #variable named after original's contents } 

Il existe un moyen simple d'y parvenir, si vous stockez toutes vos variables dans un objet / tableau. Rappelez-vous, en javascript, les tableaux sont des objets, les objets sont des objets, etc.: p

 var mystuff = {}; // new object literal var numVariables = 10; for (var i = numVariables - 1; i >= 0; i--){ var newkey = i + "_my_index"; mystuff[newkey] = "some stuff"; } 

Si vous utilisez des "variables" numériques comme dans votre exemple (var 1; var 2;), vous devez utiliser Array;

 var list=[]; //declaration list[1]="something"; //create a "variable" 1 with 'something' inside list[2]="other thing"; //create another variable var name=3; var value="Hello"; list[name]=value; //works too alert( list[1] ); //something 

Si vous utilisez des mots comme "mots-clés", vous devez utiliser des objets au lieu des Arrays

 var list={}; //declaration list["car1"]="Honda"; list["car2"]="Toyota"; list["fuit"]="Apple"; var name="greeting"; var value="Hello"; list[name]=value; //works too alert( list["car2"] ); //Toyota 

J'espère que vous avez compris.

Nous avons besoin de plus d'explications sur ce que vous essayez d'accomplir. Cela ressemble à une très mauvaise idée. Très probablement, vous devriez vraiment utiliser un tableau d'index nommé. Par exemple.

 var stuff = {} stuff[1] = "one"; stuff["name"] = "david"; 

Je suis confus par votre question, mais il semble que vous souhaitez modifier un nom de variable qui ne peut pas être fait. Vous pouvez créer une nouvelle variable avec le nom souhaité et lui attribuer quelle que soit la valeur souhaitée.

Ma question est de savoir pourquoi voulez-vous faire cela?

Vous pourriez être en mesure d'obtenir ceci avec la méthode intégrale: eval ("votre code javascript ici");

Alors peut-être que dans votre cas, ce serait quelque chose comme: eval ("var yourNewName = \" "+ yourOldVarValue +" \ ""); Puis annulez votre ancienne variable.

Mais comme les autres l'expriment, je ne vois pas pourquoi, ou dans ce cas, vous voudrez renommer une variable (à moins que ce soit pour une ruse étrange ruse lol).

[Pas testé, donc cette eval peut ne pas même fonctionner: S]