使用变量增量在Javascript中创建新变量

时间:2018-12-11 15:40:27

标签: javascript variables

这可能是初学者的问题,但是我似乎找不到答案。

它获取的数据是JSon文件中的数据。我希望它遍历它所看到的所有行。该循环以下面的方式工作,并向我返回其余代码所需的信息。我正在尝试创建多个变量,如testVar1,testVar2,testVar3等。...我不知道是否可以通过这种方式进行操作,或者是否需要找到其他解决方案。

   var i = 0;
    for (var x in data) {
        var testVar1 = data[0][1]; // works
        var testVar[i] = data[0][1];    // doesn't
        i += 1;
    }

如何使testVar [i]工作?
正确的语法是什么?

3 个答案:

答案 0 :(得分:1)

您的代码缺少数组变量var testVar = [];的初始化。



无论如何,您可能想在window对象中创建这些变量:

for (var i = 0; i <= 2; i++) {
  name = 'var' + i;
  window[name] = "value: " + i;
}

console.log(var0);
console.log(var1);
console.log(var2);

这样,您就可以继续使用“短”变量名。

答案 1 :(得分:0)

您可以将所有这些变量包装在一个对象中。

代替:

var testVar1 = data[0][1];

尝试:

var Wrapper = {};

//inside the for loop:
    Wrapper["testVar" + i] = data[0][i];
    ...and so on.

您将以Wrapper.testVar1Wrapper["testVar" + 1]的身份访问它们。

答案 2 :(得分:0)

您遇到的问题非常简单。您尝试将变量声明为数组,并在同一条语句中尝试为特定索引分配赋值。之所以不起作用,是因为array首先需要明确定义。

var testVar[i] = data[0][1];

应替换为:

var testVar = []; // outside the loop
testVar[i] = data[0][1]; // inside the loop

结果:

var i = 0,
    testVar = [],
    data = [
        ['foo', 'bar', 'baz'],
        ['kaas', 'is', 'baas']
    ];

for (var x in data) {
    var testVar1 = data[0][1];
    testVar[i] = data[0][1];
    i += 1;
}

console.log('testVar1', testVar1);
console.log('testVar', testVar);
console.log('testVar[0]', testVar[0]);
console.log('testVar[1]', testVar[1]);

如果i不是整数,则应改用object。这可以在the answer of Tilepaper中看到,尽管我建议不要使用以大写字母开头的使用变量,因为它们建议使用常量或类。