someone
someone

Reputation: 358

Is there a way to use variables in variables names?

I have the following problem. As example, these variables are declared:

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
};

Now I want to change the finalversion values by choose a random version and getting it's values.

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

Is there a way to make something like this?:

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

or

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

or something simular?

Thanks and sorry for the long question.

Upvotes: 3

Views: 135

Answers (4)

Narek Malkhasyan
Narek Malkhasyan

Reputation: 1442

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];

Upvotes: 6

DCR
DCR

Reputation: 15665

you need to add 1 to your versionnum

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
};

Upvotes: 0

LukStorms
LukStorms

Reputation: 29657

You could turn chosenversion into a function.

Then use the version as a parameter for the function

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));

Upvotes: 2

Dominik Matis
Dominik Matis

Reputation: 2146

If you are running it from browser, you can catch them from window object like

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}`])

Upvotes: 0

Related Questions