Foros del Web » Programando para Internet » Javascript »

crear nombres dinámicos para vectores

Estas en el tema de crear nombres dinámicos para vectores en el foro de Javascript en Foros del Web. El resultado final de lo q quiero conseguir es tener un vector en el q sus componentes sean vectores y los nombres de estos sean ...
  #1 (permalink)  
Antiguo 10/03/2006, 11:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Pregunta crear nombres dinámicos para vectores

El resultado final de lo q quiero conseguir es tener un vector en el q sus componentes sean vectores y los nombres de estos sean array1, array2, ... Los pasos serían los siguientes: Recogo el valor q hay en un input de mi aplicación. Dependiendo de ese número, quiero q se me vayan creando vectores q se llamen "array"+i, siendo i un número de 0 al número q se haya leído del input. Luego en esos vectores quiero introducir cierta información... ¿Cómo puedo conseguirlo?

Es q he intentado lo siguiente:

for (i=0; i<numeroDelInput; i++) {
var narray = "array" + i;
var narray = new Array();
...
}

Pero esto no me crea el array con el nombre q tiene la variable "narray", sino con el nombre "narray". Quisiera q ese nuevo vector se creara con el valor de esa variable...
  #2 (permalink)  
Antiguo 10/03/2006, 12:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Sé q en php se puede hacer de la siguiente forma:

for ($i=0; $i<10; $i++) {
$nombre = "array" . $i;
${nombre} = new array;
}

Creo q es algo así, usando ${nombre_variable}.
Pero quisiera poder usar esa funcionalidad con Js. Tal vez no es posible...
  #3 (permalink)  
Antiguo 10/03/2006, 20:28
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola AnDrEa MM:

Una solución sería utilizar eval.

Código:
<script language="JavaScript" type="text/javascript">
<!--
var name_ = "array";
for(var ctr = 0; ctr < 10; ctr++){

	eval("var " + name_ + ctr  + " =  new Array(1,2,\"Cadena\");")
	
}
array1[0] = "Nuevo valor";
alert(array1[0] + "\n" + array2[1] + "\n" + array3[2]);

//-->
</script>
Espero que te sirva.
Un saludo
  #4 (permalink)  
Antiguo 11/03/2006, 13:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Otra posibilidad es crear variables que cuelguen del objeto window, metiendo los nombres como cadenas entrecorchetadas...

for (i=0; i<numeroDelInput; i++) {
window["array" + i] = new Array();
...
}

se crearían los arrays: array0, array1...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 13/03/2006, 03:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
He probado la segunda forma, la q indicó caricatos ya q el número de cambios a realizar era menor... Pero no sé cómo puedo utilizar ahora los vectores q he creado.
Tengo hecho algo así:

for (i=0; i<variable; i++) {
window["array"+i] = new Array();
window["array"+i][0] = vnombre;
window["array"+i][1] = vtema;
}

Y tras eso, quiero q me muestre lo q contiene cada vector para comprobar el resultado, pero no sé cómo debo hacerlo. He probado varias formas, pero ninguna funciona...:

Código PHP:
// No funciona
var 0;
for (
k=0k<array1.lengthk++) {
    
alert(array1[j]);

Código PHP:
// No funciona
var 0;
for (
k=0k<["array"+k].lengthk++) {
    
alert(["array"+k][j]);

Código PHP:
// No funciona
var 0;
for (
k=0k<window["array"+k].lengthk++) {
    
alert(window["array"+k][j]);

Y no se me ocurren más maneras posibles... ¿Alguien sabe cómo puedo acceder a los vectores q me he creado inicialmente? Muchas gracias!
  #6 (permalink)  
Antiguo 13/03/2006, 03:45
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Puedes rescatar los valores de la misma manera... si tu intención es hacerlo con un bucle:

alert(window['array' + k][j])

Pruébalo y nos cuentas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 14/03/2006, 07:11
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Ok, parece q funciona
Quería saber una cosilla más, es q he buscado por la web sobre este tema pero no he sabido qué parámetros de búsqueda poner porq no he encontrado lo q quería... Siguiendo el ejemplo de la creación de vectores q he puesto arriba, podría acceder a ellos de la siguiente forma:

Código:
array0[i] ...
array1[i] ...
O debo hacerlo de la manera en q los he creado:

Código:
window["array" + k][i] ...
O tal vez también valga:

Código:
window["array0"][i] ...
window["array1"][i] ...
Lo he probado y los resultados han sido negativos... pero no sé si es q no se pueden llamar así o es q sí q se puede pero hago alguna cosilla mal. Muchas gracias por la ayuda caricatos! Si es más rápido y alguien conoce algún enlace donde pueda informarme q me lo pase y ya me informo allí.
  #8 (permalink)  
Antiguo 14/03/2006, 11:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Me extraña que tengas resultados negativos... :pensandö:

Por mi experiencia las tres formas que has probado pueden valer. (He probado en explorer, mozilla y opera)

Explica mejor que es lo que no funciona.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:41.