簡體   English   中英

如何從數組動態創建javascript變量?

[英]How to dynamically create javascript variables from an array?

假設我有一個變量名稱數組:

var varNames = new Array("name1","name2","name3");

如何通過遍歷varNames數組來創建var name1var name2var name3

這將創建全局變量(在全局命名空間中,即window )。

var varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
  window[varNames[i]] = 0;
}
name1; //=> 0

由於使用全局變量被認為是不好的做法,您可以在自定義對象中創建變量:

var myVariables = {}
   ,varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
  myVariables[varNames[i]] = 0;
}
myVariables.name1; //=> 0

[ES20xx]

 const myVariables = ['name1', 'name2', 'name3'].reduce( (a, v, i) => ({...a, [v]: i + 1 }), {}); console.log(JSON.stringify(myVariables, null, 2));

您可以按如下方式進行。 我添加了警報以證明您可以為這些變量設置值。

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"];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM