Foros del Web » Programando para Internet » Javascript »

Array multidimensional

Estas en el tema de Array multidimensional en el foro de Javascript en Foros del Web. Hola a todos: Estoy empezando a escribir en Javascript y tengo el siguiente problema: var lista1 = new Array(); var lista2 = new Array(); lista1[0] ...
  #1 (permalink)  
Antiguo 13/01/2009, 03:43
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Array multidimensional

Hola a todos:

Estoy empezando a escribir en Javascript y tengo el siguiente problema:

var lista1 = new Array();
var lista2 = new Array();

lista1[0] = "01";
lista1[1] = "02";
lista2[0] = lista1;

lista1[0] = "a";
lista1[1] = "b";
lista2[1] = lista1;

Cuando pongo:
document.writer(lista2[0][0]);

Sale por pantalla: "a" cuando yo esperaba que saliera "01".

¿Qué es lo que hago mal?

Muchas gracias y perdonar por esta pregunta "elemental".

Saludos

Benito Hellín
  #2 (permalink)  
Antiguo 13/01/2009, 05:15
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Array multidimensional

var hola='hola';

hola[0]=='h' // true
hola[1]=='o' // true
hola[2]=='l' // true
hola[3]=='a' // true

-----------------------------------------------------------------------

var hola=new Array();

hola[0]='hola0';

hola[0][0]=='h' // true
hola[0][1]=='o' // true
hola[0][2]=='l' // true
hola[0][3]=='a' // true
hola[0][4]=='0' // true

-----------------------------------------------------------------------

var hola=new Array();

hola[0]='hola ';
hola[1]='bhellin';
hola[2]='!!!';

alert(hola[0]+hola[1]+hola[2]) == 'hola bhellin!!!'

-----------------------------------------------------------------

alguien que sepa de teoria te va a explicar mejor..
  #3 (permalink)  
Antiguo 13/01/2009, 05:49
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Array multidimensional

Gracias por tu respuesta... sin duda "un ejemplo vale más que mil palabras".

Aunque "entiendo" el funcionamiento general de los arrays y tu ejemplo, no acabo de saber por qué no funciona el código que puse.

Cuando pongo:

lista1[0] = "01";
lista1[1] = "02";
lista2[0] = lista1;
document.write(lista2[0]);

El resultado que tengo es: "01, 02".
Si pongo document.write(lista2[0][0]); el resultado que tengo es "01".

Hasta aquí todo correcto.

Pero cuando añado:
lista1[0] = "a";
lista1[1] = "b";
lista2[1] = lista1;

El resultado de document.write(lista2[0]); es "a,b", es decir el contenido de lista2[1], cuando yo esperaba "01, 02", correspondiente a lista2[0].

Saludos,

Benito Hellín
  #4 (permalink)  
Antiguo 13/01/2009, 05:51
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Array multidimensional

Me toca! :)
Según las lineas de código que has dejado, en la cuarta asignas un nuevo valor a lista1, es decir:
var lista1 = new Array();
var lista2 = new Array();

lista1[0] = "01"; //en este momento lista1[0] es "01"
lista1[1] = "02";
lista2[0] = lista1;

lista1[0] = "a"; //le acabas de asignar un nuevo valor; ahora es "a"
...

Por eso document.writer(lista2[0][0]); es igual a "a"

salu2
  #5 (permalink)  
Antiguo 13/01/2009, 05:57
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Array multidimensional

Si vos reseteas lista1 y la seteas como valor a otra variable.. vas a obtener el valor reseteado.. no el valor previo...

vos 1ro haces..

lista1[0] = "01";
lista1[1] = "02";


Ahi estas seteando los valores para luego setearlos en lista2[0]...

si vos los cambias..
lista1[0] = "a";
lista1[1] = "b";

Estas reseteando los valores.. y vas a obtener los nuevos valores...

A lo sumo lo que tendrias que hacer es..
lista1[0] = "01";
lista1[1] = "02";
lista2[0] = lista1;


lista3[0] = "a";
lista3[1] = "b";

lista2[1] = lista1;


y lista1 te quedaria ='a,b'
  #6 (permalink)  
Antiguo 13/01/2009, 05:59
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Array multidimensional

un Array multidimensional hay que entenderlo como una tabla (en el caso que sea de 2 dimensiones) o como un cubo (si es de 3 dimensiones). si es de mas dimensiones no sabría ejemplificarte como interpretar el array. Pero a lo que voy; en cada 'dimension' almacenas un dato. En tu caso que es de 2 dimensiones (menos mal porque menudo lío!) debes pensar como una tabla con sus filas y sus columnas. Tu 'tabla' consta en total de 4 casillas (dos columnas y 2 filas) y en cada casillas almacenas un valor diferente.
Por tanto [0][0] corresponde a la primera columna-primera fila
[0][1] = primera columna - segunda fila
...
si modificas alguno de los valores el resultado de mostar la 'casilla' también cambia...

espero que lo hayas entendido porque empiezo a liarme yo solito!!!

salu2
  #7 (permalink)  
Antiguo 13/01/2009, 06:10
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Array multidimensional

Creo que ya empiezo a entender algo más.
Yo creí que era parecido a como se hace en Java:

public class prueba {
public static void main (String [] args) {
String lista1[] = new String[2];
String lista2[][] = new String[2][2];

lista1[0] = "01";
lista1[1] = "02";
lista2[0] = lista1;

System.out.println(lista2[0][0]); // resultado "01"

lista1[0] = "a";
lista1[1] = "b";
lista2[1] = lista1;

System.out.println(lista2[1][0]); // resultado "a"
}

}

Pero veo que no funciona así y cuando asignas un nuevo valor a lista1[0] se cambia en lista2[0] y lista2[1].

Entonces, ¿Qué moficaciones debería hacer en el código para que funcione como yo esperaba?

Gracias,

Benito Hellín
  #8 (permalink)  
Antiguo 13/01/2009, 06:15
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Array multidimensional

cambias

lista1[0] = "a";
lista1[1] = "b";

por

lista3[0] = "a";
lista3[1] = "b";

o algo asi
  #9 (permalink)  
Antiguo 13/01/2009, 06:30
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Array multidimensional

Si, es lo que dice Fernand0:
Tienes que crear 2 arrays para los valores (01 y 02 || a y b) y una variable que juegue con esos arrays:
lista1[0] = '01';
lista1[1] = '02';
lista2[0] = 'a';
lista2[1] = 'b';
var lista3 = new Array();
lista3[0] = lista1;
lista3[1] = lista2;

con esto lista3[0][0] es igual a '01'

salu2
  #10 (permalink)  
Antiguo 13/01/2009, 06:49
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Array multidimensional

Muchas gracias por vuestra ayuda.

Al final dejaré el código así:

var lista2 = new Array();

var lista1 = new Array();
lista1[0] = '01';
lista1[1] = '02';
lista2[0] = lista1;

var lista1 = new Array();
lista1[0] = 'a';
lista1[1] = 'b';
lista2[1] = lista1;

Donde docuemnt.write(lista2[0]); tiene como resultado "01,02".

Haciendo un var lista1 = new Array(); cada vez consigo no tener que cambiar el nombre de la variable que siempre me produce errores al escribir.

Quizá no es la forma más elegante pero funciona...

Si alguien tiene una idea mejor se lo agradeceré.

De nuevo muchas gracias.

Saludos,

Benito Hellín
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 04:31.