Использование приращения переменной для создания новых переменных в Javascript - PullRequest
0 голосов
/ 11 декабря 2018

Это может быть вопрос новичка, но я не могу найти ответ на этот вопрос.

Данные, которые он получает, - это данные из файла 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 голосов
/ 11 декабря 2018

Ваш код пропускает инициализацию переменной массива: 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);

Таким образом, вы можете продолжать использовать «короткое» имя переменной.

0 голосов
/ 11 декабря 2018

Ваша проблема довольно проста.Вы пытаетесь объявить переменную как массив и в том же выражении попытаетесь присвоить значение определенному индексу.Причина, по которой это не работает, заключается в том, что массив должен быть сначала определен явно.

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 не является целым числом, вместо него следует использовать объект .Это можно увидеть в ответе Tilepaper , хотя я советую не использовать переменные, начинающиеся с заглавной буквы, поскольку они предлагают константу или класс.

0 голосов
/ 11 декабря 2018

Вы можете обернуть все эти переменные в объекте.

вместо:

var testVar1 = data[0][1];

Попробуйте:

var Wrapper = {};

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

Вы получите доступ к ним как Wrapper.testVar1 или Wrapper["testVar" + 1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...