JavaScript: динамическое создание переменных для циклов - PullRequest
48 голосов
/ 11 июля 2011

Как использовать цикл for для динамического создания переменных и их возврата.

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

Цель - получить следующий результат:

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

Ответы [ 6 ]

94 голосов
/ 11 июля 2011

Вы должны использовать массив:

function createVariables(){
  var accounts = [];

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

  return accounts;
}

У вас будет доступ к accounts[0] через accounts[20].

15 голосов
/ 11 июля 2011

Единственный способ узнать это - использовать функцию JavaScript eval.

Что-то вроде eval("account" + 1 + "='some value'");

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

Однако я думаю, что @Domenic имеет лучший ответ.

1 голос
/ 27 июня 2017

Я не был уверен, что ответит на старый вопрос однако наткнулся на это, пытаясь найти ответ сам.

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

0 голосов
/ 20 апреля 2018

Вы можете использовать метод 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();
0 голосов
/ 27 марта 2018
let etc = { name: 'foobar', city: 'xyz', company: 'companyName' };

Object.keys(etc).forEach(key=>{
window[`${key.toUpperCase()}`] = new Object(`${etc[`${key}`]}`)
});

console.log("-->"+NAME) //foobar

это похоже на то, что описывает @ whatmike , но оно не работает в NodeJS, поскольку использует окно. (

0 голосов
/ 13 октября 2016
function createVariables() {
    var accounts = [];
    for (var i = 0; i <= 20; ++i) {
        accounts[i] = "merhaba" + i;
    }
    return accounts;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...