Comunidad de diseño web y desarrollo en internet online

Definir un matriz bidimensional

Citar            
MensajeEscrito el 07 Jul 2007 02:27 pm
En C++:

Código :

int t[3][3];
Sencillo. Claro.

En cambio, en AS:

Código :

var t:Array = new Array();
for (i=0; i<3; i++) {
t[i] = new Array();
t[i][0] = 0;
t[i][1] = 0;
t[i][2] = 0;
}
¿Es correcto? ¿No hay una forma menos engorrosa? ¬¬

Gracias.

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 07 Jul 2007 06:27 pm
Me auto-contesto: Es correcto. Es sucio, pero es correcto.

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 07 Jul 2007 06:39 pm
Multidimensional Array:

Código :

var myArray:Array = new Array();
myArray = [[0],[0]];


Y asi puedes ir agregando mas elementos.

Por Carloz

BOFH

3426 de clabLevel

38 tutoriales

1 ejemplo

 

firefox
Citar            
MensajeEscrito el 07 Jul 2007 08:08 pm

Código :

var multiArray:Array = new Array();
multiArray = [["Bleend", 760, true], ["carloz.yanez", 115, true], ["Zguillez", 2698, true]];
trace(multiArray[0][0]);

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 07 Jul 2007 08:46 pm
Gracias a todos.

Era eso.

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 07 Jul 2007 10:16 pm
Si t ya es un Array, no hace falta declarar t[i] como Array en cada una de las iteraciones del for.

Igual, para hacerlo más fácil puede que te interese usar push:

Código :

var miArray:Array = new Array ();
for (var i = 0; i < 5; i++) {
miArray.push (["algo" , i]); // No te olvides de los corchetes.
}
Además el push impide que se compliquen las cosas si el Array ya tiene algunos elementos.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 08 Jul 2007 06:45 pm
es cierto lo q menciona HernanRivas, un array acepta otros elementos: un object, un number, un ARRAY, etc.

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 09 Jul 2007 03:02 am

eldervaz escribió:

es cierto lo q menciona HernanRivas, un array acepta otros elementos: un object, un number, un ARRAY, etc.
Yo no dije eso :? , simplemente mostré una de las maneras de crear un Array multidimensional.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 10:34 am

HernanRivas escribió:

Si t ya es un Array, no hace falta declarar t como Array en cada una de las iteraciones del for.

Igual, para hacerlo más fácil puede que te interese usar push:

Código :

var miArray:Array = new Array ();
for (var i = 0; i < 5; i++) {
miArray.push (["algo" , i]); // No te olvides de los corchetes.
}
Además el push impide que se compliquen las cosas si el Array ya tiene algunos elementos.
Mmmmm...:S
Lo siento, pero no entiendo como trabaja un push. La ayuda flash no me ayuda. (XD) ¿Para que mas puede servir un push

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes



Ultima edición por Bleend el 09 Jul 2007 11:14 am, editado 1 vez

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 11:01 am

Bleend escribió:

HernanRivas escribió:

Si t ya es un Array, no hace falta declarar t como Array en cada una de las iteraciones del for.

Igual, para hacerlo más fácil puede que te interese usar push:

Código :

var miArray:Array = new Array ();
for (var i = 0; i < 5; i++) {
miArray.push (["algo" , i]); // No te olvides de los corchetes.
}
Además el push impide que se compliquen las cosas si el Array ya tiene algunos elementos.
Mmmmm...:S
Lo siento, pero no entiendo como trabaja un [i]push
. La ayuda flash no me ayuda. (XD) ¿Para que mas puede servir un push

Lo que hace push() es añadir elementos a un array. Lo que te dice HernanRivas es que si añades como elemento del array otro array NO es necesario que este segundo array esté definido como tal.

Código :

miArray.push(new Array("algo", i));

Simplemente utiliza los corchetes [..., ...]

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 09 Jul 2007 11:29 am

Zguillez escribió:

Lo que hace push() es añadir elementos a un array. Lo que te dice HernanRivas es que si añades como elemento del array otro array NO es necesario que este segundo array esté definido como tal.
¿Un array que no lo defines como array? Entonces, ¿como lo defines? Es decir, por mucho que tu digas que un coche es un avión, ¿este no seguirá siendo un coche? Y si intentas volar con él, te la pegas...

Zguillez escribió:

Simplemente utiliza los corchetes [..., ...]
Sí, ya lo hice, me funciona bien, gracias.

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 12:41 pm

Bleend escribió:

¿Un array que no lo defines como array? Entonces, ¿como lo defines? Es decir, por mucho que tu digas que un coche es un avión, ¿este no seguirá siendo un coche? Y si intentas volar con él, te la pegas...

Vamos a ver, gañan... lo que quiero decir que es para crear un array multidireccional no has de crear una instancia de cada array que metas en el array principal:

Código :

var array1:Array = new Array();
//
var array2:Array = new Array();
array2 = [item11, item12, item13];
array1.push(array2);
//
var array3:Array = new Array();
array3 = [item21, item22, item23];
array1.push(array3);

ni siquiera introducirlos definidos como tipo Array con el operador new:

Código :

var array1:Array = new Array();
array1.push(new Array([item11, item12, item13]));
array1.push(new Array([item21, item22, item23]));

Solo mete los datos con los corchetes:

Código :

var array1:Array = new Array();
array1.push([item11, item12, item13]);
array1.push([item21, item22, item23]);

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 09 Jul 2007 01:49 pm

Zguillez escribió:


Vamos a ver, gañan...
:shock: :shock: :ownz:
_____
Vale, si tu tienes:

Array1 -> [ ] [ ] [ ]
Array2 -> [ ] [ ] [ ]

Y le metes un push al Array 1 con el Array 2:

Código :

array1.push(array2);

O simplemente los valores [ ], como dices (eso esta claro):

Código :

array1.push([item1, item2, item3]);
, ¿que te queda?

A)
[ ] [ ] [ ]
[ ]
[ ]


B)
[ ] [ ] [ ]
_ _[ ]
_ _[ ]

C)
[ ] [ ] [ ]
____ _[ ]
____ _[ ]

D)
[ ] [ ] [ ]
[ ] [ ] [ ]
[ ] [ ] [ ]


La D creo que no. ¿Como defines en que columna deseas extenderlo? Según dices, se coloca siempre en la primera columna que no esta extendida: ¿Esa así?
array1.push([item11, item12, item13]);
array1.push([item21, item22, item23]);


Gracias

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 03:37 pm
A ver si esto aclara las cosas:

Código :

var arr1:Array = new Array ();
// No es una L, es un "uno"
arr1.push (["a0", "a1"])
arr1.push (["b0", "b1"])
//
trace (arr1); // Output: a0, a1, b0, b1
trace (arr1[0]); // Output: a0, a1
trace (arr1[1][1]); // Output: b1

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 03:42 pm
Ok, ya. Tnks.
:P

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 03:44 pm
Por cierto, en el caso que comentás, la respuesta es....... ninguno U_U

El push agrega el Array2 como el último elemento del Array1. Entonces, el Array2 va a quedar en el índice 3, sin reemplazar ningún elemento. Justamente esa es su utilidad.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 03:57 pm
Es decir, te queda esto:
[ ] [ ] [ ]
[ ] [ ] [ ]

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:06 pm
No, a menos que el índice 0 del Array1 contuviera los 3 elementos...

No es lo mismo esto:

Código :

var arr1:Array = new Array ([elemento00, elemento01]):
arr1.push ([elemento10, elemento11]);
Que ésto:

Código :

var arr1:Array = new Array (elemento0, elemento1):
arr1.push ([elemento20, elemento21]); 
En el primer caso, el el Array1 contiene los elementos que incluímos con el push en el índice 1, en el segundo caso, lo que agregamos con el push se encuentra en el índice 2.

Los números a los elementos se corresponden con sus índices.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:15 pm

Código :

var multiarray:Array = new Array();
multiarray.push([item1a, item1b, item1c]);
multiarray.push([item2a, item2b, item2c]);
multiarray.push([item3a, item3b, item3c]);
/*
[item1a]  [item2a]  [item3a]
[item1b]  [item2b]  [item3b]
[item1c]  [item2c]  [item3c]
*/

Para añadir una columna más al array

Código :

push_columna([item4a, item4b, item4c]);
//
function push_columna(columna:Array)
{
   multiarray.push(columna);
}
/*
[item1a]  [item2a]  [item3a]  [item4a]
[item1b]  [item2b]  [item3b]  [item4b]
[item1c]  [item2c]  [item3c]  [item4c]
*/

Para añadir una fila más al array

Código :

push_linea([item1d, item2d, item3d, item4d]);
//
function push_linea(linea:Array)
{
   for (var i:Number = 0; i < multiarray.length; i++)
   {
      multiarray[i].push(linea[i]);
   }
}
/*
[item1a]  [item2a]  [item3a]  [item4a]
[item1b]  [item2b]  [item3b]  [item4b]
[item1c]  [item2c]  [item3c]  [item4c]
[item1d]  [item2d]  [item3d]  [item4d]
*/

Para acceder a los datos

Código :

multiarray[columna][linea]

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:20 pm
No vendría mal hacer un tutorial explicando y ejemplificando cada uno de los métodos y propiedades de la clase Array. Cuando tenga tiempo, lo armo y lo subo.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:44 pm
Sólo por curiosidad Bleend, para que necesitas un Array Bi/Multidimensional?

Yo los uso para los Mapas en los Tile Based Games, y los cargo con un doble for.

Aquí un ejemplo

Por Carloz

BOFH

3426 de clabLevel

38 tutoriales

1 ejemplo

 

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:54 pm
Fantástico Zguillez. Verdaderamente te lo curras.

Lo que me pasaba, es que "los vectores", los disponía de forma horizontal dentro de la matriz, tal como me venían. Error, no se debe hacer así.

Ok, ahora creo que con los códigos de Zguillez ya lo he entendido correctamente. Hagamos la prueba de fuego:

HernanRivas escribió:

Código :

var miArray:Array = new Array ();
for (var i = 0; i < 5; i++) {
miArray.push (["algo" , i]); // No te olvides de los corchetes.
}

Vale, según creo, esto te crea una matriz de 2x5 así:

[algo] [algo] [algo] [algo] [algo]
__[0]___[1]___[2]___[3]___[4]

¿Es correcto?

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes



Ultima edición por Bleend el 09 Jul 2007 05:01 pm, editado 1 vez

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 04:58 pm

carloz.yanez escribió:

Sólo por curiosidad Bleend, para que necesitas un Array Bi/Multidimensional?

Yo los uso para los Mapas en los Tile Based Games, y los cargo con un doble for.

Aquí un ejemplo
Bueno, estoy haciendo un 3 en raya en flash, para referirme al tablero, uso una Matriz 3x3.

Lo solucioné usando esto:

Código :

var t:Array = new Array();
t = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Jul 2007 05:05 pm

Bleend escribió:

¿Es correcto?

Si


*Bleend en el momento de entender el array bidireccional

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 09 Jul 2007 05:27 pm
Creo que si hubiera posteado mi ejemplo desde el principio se hubiesen evitado tanto post. :lol:
En fin, no recordaba ni que lo habia hecho.

P.D. La foto esta genial hahaha.

Por Carloz

BOFH

3426 de clabLevel

38 tutoriales

1 ejemplo

 

firefox
Citar            
MensajeEscrito el 09 Jul 2007 05:28 pm

*Zguillez hablando con n00bs


PD. Por cierto, yo soy mucho mas guapo que ese. ¬¬

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 10 Jul 2007 01:47 pm
Bien, acabo de hacer el tutorial que mencioné más arriba. Aunque veo que se me adelantaron :roll: ....

De todos modos, me enfoqué más en los métodos, y a los Arrays multidimensionales no los traté con demasiada profundidad.

Éste es el link.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2010 05:32 pm

Zguillez escribió:

Código :

var multiarray:Array = new Array();
multiarray.push([item1a, item1b, item1c]);
multiarray.push([item2a, item2b, item2c]);
multiarray.push([item3a, item3b, item3c]);
/*
[item1a]  [item2a]  [item3a]
[item1b]  [item2b]  [item3b]
[item1c]  [item2c]  [item3c]
*/

Para añadir una columna más al array

Código :

push_columna([item4a, item4b, item4c]);
//
function push_columna(columna:Array)
{
   multiarray.push(columna);
}
/*
[item1a]  [item2a]  [item3a]  [item4a]
[item1b]  [item2b]  [item3b]  [item4b]
[item1c]  [item2c]  [item3c]  [item4c]
*/

Para añadir una fila más al array

Código :

push_linea([item1d, item2d, item3d, item4d]);
//
function push_linea(linea:Array)
{
   for (var i:Number = 0; i < multiarray.length; i++)
   {
      multiarray[i].push(linea[i]);
   }
}
/*
[item1a]  [item2a]  [item3a]  [item4a]
[item1b]  [item2b]  [item3b]  [item4b]
[item1c]  [item2c]  [item3c]  [item4c]
[item1d]  [item2d]  [item3d]  [item4d]
*/

Para acceder a los datos

Código :

multiarray[columna][linea]


Creo que eso lo resume todo muy buen ejemplo :wink: gracias Zguillez

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 19 Ago 2010 05:33 pm

HernanRivas escribió:

Bien, acabo de hacer el tutorial que mencioné más arriba. Aunque veo que se me adelantaron :roll: ....

De todos modos, me enfoqué más en los métodos, y a los Arrays multidimensionales no los traté con demasiada profundidad.

Éste es el link.


Felicidades muy buen tutorial. muy completo Gracias por tu aporte.! ^^

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.