Создание динамических имен переменных на основе результатов подсчета - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь объединить строку и число в динамически генерируемую переменную.В настоящее время пробовал это следующим образом:

const ElementCount = 2;

for (i = 1, i <= ElementCount, i++) {
    let SampleVariable[i] = "test";
}

Элемент ElementCount в дальнейшем будет динамическим.

Результат вышеупомянутой функции должен выглядеть следующим образом:

SampleVariable1 = "test"
SampleVariable2 = "test"

Мой кодкажется, неправильно - что я должен изменить здесь?Решением может быть также JS или jQuery.

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

решение заключается в использовании eval, но это неприятный код, избегайте использования 'eval', просто используйте array или object.

1, eval решение:

const ElementCount = 2;

for (let i = 1; i <= ElementCount; i++) {
    eval("let SampleVariable[" + i + "] = 'test'");
}

2, array решение:

const ElementCount = 2;
let Variables = []
for (let i = 1; i <= ElementCount; i++) {
    Variables["SampleVariable" + i] = "test";
}

3, object решение:

const ElementCount = 2;
let Variables = {}
for (let i = 1; i <= ElementCount; i++) {
    Variables["SampleVariable" + i] = "test";
}
0 голосов
/ 18 февраля 2019

Это моё решение

const ElementCount = 2;

for(i = 1; i <= ElementCount; i++) {
    this['SampleVariable'+i] = "test";
}
SampleVariable1 // "test" (browser)
this.SampleVariable2 // "test"
0 голосов
/ 18 февраля 2019

В вашем коде есть несколько ошибок

  1. Вы используете запятую , для разделения операторов.Вы должны использовать точку с запятой ;
  2. Вы объявляете SampleVariable внутри цикла for, поэтому он недоступен снаружи.Объявите это вне цикла.
  3. Вы не должны использовать независимые переменные для этой цели, поскольку они просто отличаются на 1. Вы должны хранить их в массиве и использовать SampleVariable[number] для доступа к ним.
  4. Вы должны инициализировать i = 0, в противном случае первый элемент SampleVariable будет undefined

const ElementCount = 2;
let SampleVariable = [];
for (let i = 0; i < ElementCount; i++) {
    SampleVariable[i] = "test";
}
console.log(SampleVariable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...