[Pregunta]: Problemas con javascript (eval)

Iniciado por Leguim, 14 Octubre 2021, 21:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Hola,

estaba tratando de hacer esto:
Código (javascript) [Seleccionar]

let string = 'form_x.input_1.value, form_x.input_2.value, form_x.input_3.value, form_x.input_4.value';

// si yo hago..
eval([string]); // esto va a crear un arreglo donde solamente agregará el último elemento, es decir el valor del input 4... Los demás no me aparecen.
[code]
[/code]

Danielㅤ

#1
Hola, eso no funciona así, tenés que usar una matriz para agregar arrays o un array para insertar los strings.

Primero tenés que crear un array vacío, después usar un bucle que recorra los elementos de tu string para ir agregandolos a tu array, por lo que cada ciclo/vuelta que de el bucle, va a ir sumando elementos a tu array/arreglo.

Básicamente tu arreglo/array quedaría así:

Código (javascript) [Seleccionar]

arrayInputs
["form_x.input_1.value", "form_x.input_2.value", "form_x.input_3.value", "form_x.input_4.value"]



Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

MinusFour

#2
Poner el string entre corchetes no hace nada aquí... La función de eval convierte el arreglo a un string de vuelta, por lo que acabas haciendo:

Código (javascript) [Seleccionar]
eval('form_x.input_1.value, form_x.input_2.value, form_x.input_3.value, form_x.input_4.value');

Lo cual evalúa al último valor separado por coma (así funciona el operador de la coma en javascript).

Si lo que quieres es convertir el string en un arreglo, la forma más fácil es hacer un split...

Código (javascript) [Seleccionar]
let arr = string.split(', ');

Edit:

Me doy cuenta que el arreglo tal cual no es exactamente como lo que quieres. Si esas son variables y propiedades de javascript puedes hacer dos cosas.

Hacer eval de un arreglo en forma de string:

Código (javascript) [Seleccionar]
let arr = eval(`[${string}]`);

O hacer eval a cada elemento de la lista:

Código (javascript) [Seleccionar]
let arr = string.split(', ').map(eval);

Probablemente sea mejor una llama directa de eval (dependiendo del contexto de las variables).

Código (javascript) [Seleccionar]
let arr = string.split(', ').map(e => eval(e));