Estoy tratando de usar una variable como otro nombre de variables. Por ejemplo, tengo lo siguiente:

var dynamicname = 'name1_'

Y estoy tratando de establecerlo como el nombre de una nueva variable como esta:

dynamicname + '2' = 'myvalue'

Obviamente, esto no funciona, pero ¿hay alguna manera de lograrlo? ¿Sería eval adecuado?

0
fightstarr20 9 sep. 2018 a las 18:06

4 respuestas

La mejor respuesta

Para mantener un indicador / indicador para un video visto, puede usar Set o si necesita más información almacenada, tome un Map en lugar de usar variables creadas dinámicamente donde todavía necesita crear un descriptor de acceso para la variable también.

var seen = new Set;

console.log(seen.has('foo')); // false;

seen.add('foo');

console.log(seen.has('foo')); //  true;
1
Nina Scholz 9 sep. 2018 a las 16:20

Ligeramente apagado, pero una posible respuesta a esto usando objetos puede ser algo como:

const obj = {
    [ dynamicNameVar + '2' ]: ...
}

O, para la gente de la vieja escuela,

var obj = {};
obj[dynamicNameVar + '2'] = ...

¡Espero que esto ayude! :)

2
weirdpanda 9 sep. 2018 a las 15:17

Como otros dijeron, esta es una mala práctica y debes usar objetos. Pero si alguien realmente necesita hacer esto por alguna razón, la forma correcta de hacerlo es usar el objeto de ventana, en lugar de evaluar. En tu caso sería:

var dynamicname = 'name1_'
window[dynamicname + '2'] = 'myvalue'

Puede hacer alert(name1_2) y se mostrará "myvalue".

0
Burhan B 9 sep. 2018 a las 16:03

Como se menciona en los comentarios, nunca debe hacer esto.

Pero si quieres hacer esto:

var name ="name1_";

// declare a new var as name1_test and set it to 'TestWorked'.
eval("var "+name+"test = 'TestWorked'");

// prints value of name1_test ('TestWorked')
console.log(name1_test);
1
dustytrash 9 sep. 2018 a las 15:28