Есть ли способ использовать переменные в именах переменных? - PullRequest
3 голосов
/ 26 января 2020

У меня следующая проблема. Например: объявлены следующие переменные.

var chosenversion = {
number1: 6,
number2: 4,
number3: 9
};

var version1 = {
number1: 6,
number2: 4,
number3: 9
};

var version2 = {
number1: 2,
number2: 7,
number3: 8
};

var version3 = {
number1: 1,
number2: 5,
number3: 2
};

Теперь я хочу изменить значения finalversion, выбрав случайную версию и получив ее значения.

var versionnum = Math.floor(Math.random() * Math.floor(3));

Есть ли способ сделать что-то вроде этого:

chosenversion = {
number1: version[versionnum].number1;
number2: version[versionnum].number2;
number3: version[versionnum].number3;
};

или

chosenversion = {
number1: version+versionnum.number1;
number2: version+versionnum.number2;
number3: version+versionnum.number3;
};

или что-то похожее?

Спасибо и простите за длинный вопрос.

Ответы [ 4 ]

6 голосов
/ 26 января 2020
var versions = {
    version1: {
        number1: 6,
        number2: 4,
        number3: 9
    },
    version2: {
        number1: 2,
        number2: 7,
        number3: 8
    },
    version3: {
        number1: 1,
        number2: 5,
        number3: 2
    }
}

var versionnum = Math.floor(Math.random() * Math.floor(3)) + 1;

var chosenversion = versions["version" + versionnum];
1 голос
/ 26 января 2020

Вы можете превратить chosenversion в функцию.

Затем используйте версию в качестве параметра для функции

const version1 = {
number1: 6,
number2: 4,
number3: 9
};

const version2 = {
number1: 2,
number2: 7,
number3: 8
};

const version3 = {
number1: 1,
number2: 5,
number3: 2
};

const chosenversion = (version) => {
switch(version) {
 case 1:  return version1; break;
 case 2:  return version2; break;
 case 3:  return version3; break;
 default: return version1;
   } 
};

console.log(chosenversion(1).number1);
console.log(chosenversion(2).number1);

var versionnum = Math.floor(Math.random() * 3) + 1;

console.log('versionnum: '+ versionnum);

console.log(chosenversion(versionnum));
0 голосов
/ 26 января 2020

вам нужно добавить 1 к вашему номеру версии

var versions = {
    version1: {
        number1: 6,
        number2: 4,
        number3: 9
    },
    version2: {
        number1: 2,
        number2: 7,
        number3: 8
    },
    version3: {
        number1: 1,
        number2: 5,
        number3: 2
    }
}

var versionnum = Math.floor(Math.random() * Math.floor(3)) + 1;
console.log(versionnum);

chosenversion = {
    number1: versions["version" + versionnum].number1,
    number2: versions["version" + versionnum].number2,
    number3: versions["version" + versionnum].number3
};
0 голосов
/ 26 января 2020

Если вы запускаете его из браузера, вы можете поймать их из window объекта, например

var chosenversion = {
number1: 6,
number2: 4,
number3: 9
};

var version1 = {
number1: 6,
number2: 4,
number3: 9
};

var version2 = {
number1: 2,
number2: 7,
number3: 8
};

var version3 = {
number1: 1,
number2: 5,
number3: 2
};

let ver = 1;
let num = 2;

console.log(window[`version${ver}`][`number${num}`])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...