JavaScript:为循环动态创建变量

JavaScript: Dynamically Creating Variables for Loops

本文关键字:创建 变量 动态 循环 JavaScript      更新时间:2023-09-26

如何使用for循环动态创建变量并返回。

function createVariables()
{
for ( i=0; i<=20; i++ )
    {
        var account = i;
        return var account + i;
    }
 }

目标是获得以下结果:

var account1;
var account2;
var account3; and etc.....

您应该使用一个数组:

function createVariables(){
  var accounts = [];
  for (var i = 0; i <= 20; ++i) {
      accounts[i] = "whatever";
  }
  return accounts;
}

然后您可以访问accounts[0]accounts[20]

我知道如何做到这一点的唯一方法是使用JavaScript eval函数。

类似eval("account" + 1 + "='some value'");

http://www.w3schools.com/jsref/jsref_eval.asp

然而,我认为@Domenic有一个更好的答案。

我不确定是否要回答一个老问题,但我在自己寻找答案时偶然发现了这个问题。

for (var i = 1; i < 11; i++) { // Creating 10 objects
window["Object"+i] = new Object();
}
console.log(Object7); // is not undefined

上面的代码在创建动态对象时循环到10,如上所述https://www.codecademy.com/en/forum_questions/51068e93f73ad4947a005629

我发现这是最简单的解决方案

for (var i = 0; i < 10; i++) {
   this["RONAK"+i] = "MY VAL";
}

输出

RONAK0 = "MY VAL"
RONAK1 = "MY VAL"
RONAK2 = "MY VAL"
...
RONAK9 = "MY VAL"

您可以使用eval((方法在执行传递给它的JavaScript语句时声明动态变量。

function createVariables()
{
    for ( i=0; i<=20; i++ )
    {
        var str ="account"+ i+" = undefined";
        //Declaring and Setting dynamic variable to undefined using eval
        eval(str);
    }
}
createVariables();
let etc = { name: 'foobar', city: 'xyz', company: 'companyName' };
Object.keys(etc).forEach(key=>{
window[`${key.toUpperCase()}`] = new Object(`${etc[`${key}`]}`)
});
console.log("-->"+NAME) //foobar

这与@whatevermike描述的类似,但它在NodeJS中不起作用,因为它使用了window。:(

function createVariables() {
    var accounts = [];
    for (var i = 0; i <= 20; ++i) {
        accounts[i] = "merhaba" + i;
    }
    return accounts;
}

以下代码将实际创建变量,而不是创建@Domenic 提出的这种哈希表

    function createVariables(){
        var varName = "accounts";
        for (var i = 0; i <= 20; ++i) {
            eval('var ' + varName + i + ' = ' + '"whatever"' + ';');
        }
        return accounts;
    }

我对我用代码迭代变量的方式感到非常自豪,我打算分享它,但我想我只会向你展示它的修改版本。

function variableBuilder() {
   let i = 0;
   while (i <= 20) {
      let accountVariable = "account".concat(i);
      `// variable can even be reassigned here`
      console.log(accountVariable);
      i++;
   }
}

您可以在我建议的位置使用变量作为迭代变量标识符;我使用这种方法来构建DOM节点,以创建动态构建的HTML表。

我们可以使用地图。

var map = {};
for (var i = 0; i < 10; ++i) {
  map["nutrient" + i] = "some stuff" + i;
}
console.log(map)

结果:

{
  nutrient0: 'some stuff0',
  nutrient1: 'some stuff1',
  nutrient2: 'some stuff2',
  nutrient3: 'some stuff3',
  nutrient4: 'some stuff4',
  nutrient5: 'some stuff5',
  nutrient6: 'some stuff6',
  nutrient7: 'some stuff7',
  nutrient8: 'some stuff8',
  nutrient9: 'some stuff9'
}

最简单的方法是使用eval并将变量声明行写入符合条件的循环中

    for (let i = 0; i <= 3; i++) {
          eval(`var variable${i}=${i}`);
          eval(`console.log(variable${i})`)
      }
//Output:
0
1
2
3

您还可以控制台记录外部的值,因为它们使用var关键字

声明为全局值