Como estamos a ver, as matrices son bastante importantes en JavaScript e tamén na maioría dos idiomas de programación. En concreto, xa aprendemos a crear matrices e usalos en artigos anteriores do manual de JavaScript. Pero aínda temos algunhas cousas importantes para explicar, como as matrices multidimensionales.
As matrices multidimensionales son estruturas de datos que almacenan os valores en máis dunha dimensión. As matrizes que vimos ata agora os valores da tenda nunha dimensión, polo tanto, para acceder a posicións que usamos só un índice. As matrices tridimensionais gardan os seus valores, para poñela de algunha maneira, en filas e columnas e, polo tanto, necesitaremos dous índices para acceder a cada unha das súas posicións.
Noutras palabras, unha matriz multidimensional é como Un recipiente que salvou máis valores para cada posición, é dicir, coma se os elementos da matriz eran outras arrays.
En JavaScript non hai ningún obxecto auténtico de matriz-multidimensinal. Para usar estas estruturas podemos definir matrices que en cada unha das súas posicións haberá outra matriz. Nos nosos programas podemos usar matrices de calquera dimensión, veremos a continuación como traballar con matrices bidimensionais, que será o máis común.
Neste exemplo imos crear unha bidimensional a matriz onde teremos por unha das cidades laterais e, por outra, a temperatura media que fai en cada un durante os meses de inverno.
coas liñas anteriores que nós crearon tres matrices de 1 dimensión e tres elementos, como os que xa sabiamos. Agora imos crear unha nova matriz de tres elementos e imos presentar as matrices previamente creadas dentro de cada unha das súas caixas, coas que teremos unha variedade de matrices, é dicir, unha matriz tridimensional
Vemos que para introducir toda a matriz que nos referimos sen parénteses ou parénteses, senón só co seu nome. A matriz temperaturas_quidade é a nosa matriz de dúas dimensións.
Tamén é interesante ver como unha xira é realizada por unha matriz bidimensional. Para iso temos que facer un bucle que pasa por cada unha das caixas de matriz bidimensional e dentro delas faga unha nova xira por cada unha das súas caixas internas. É dicir, unha xira por unha matriz dentro doutro.
O método para facer unha xira dentro doutro é colocar un bucle dentro doutro, que se chama bucle anidado. Neste exemplo imos poñer un lazo dentro doutro. Ademais, imos escribir os resultados nunha táboa, que complicará un pouco o guión, pero podemos ver como construír unha táboa de JavaScript mentres realizamos a ruta aniñada ao lazo.
document.write("<table width=200 border=1 cellpadding=1 cellspacing=1>"); for (i=0;i<temperaturas_cuidades.length;i++){ document.write("<tr>") document.write("<td><b>Ciudad " + i + "</b></td>") for (j=0;j<temperaturas_cuidades.length;j++){ document.write("<td>" + temperaturas_cuidades + "</td>") } document.write("</tr>") } document.write("</table>")
Este script é un pouco máis complexo que os vistos anteriormente. A primeira acción é escribir o encabezado da táboa, é dicir, a etiqueta xunto cos seus atributos. Co primeiro ciclo realizamos unha xira á primeira dimensión da matriz e usamos a variable I para manter a conta da posición actual. Para cada iteración deste ciclo, escribimos unha liña e para comezar a fila abrimos a etiqueta <TR>
. Ademais, escribimos nunha caixa o número da cidade que viaxamos nese momento. Posteriormente poñemos outro lazo que está pasando por cada unha das caixas de matriz na súa segunda dimensión e escribimos a temperatura da cidade actual en cada un dos meses, dentro da súa etiqueta <TD>
. Unha vez que o segundo loop remata, imprimíronse as tres temperaturas e, polo tanto, a fila está rematada. O primeiro ciclo continúa a revogar ata que todas as cidades sexan impresas e unha vez rematado, pechamos a táboa.
Podemos ver o exemplo en execución e examinar o código de todo o script
Inicialización das matrices
Para rematar o tema das matrices veremos un xeito de inicializar os seus valores mentres o declaramos, para que poidamos realizar de xeito máis rápido Proceso de introducir valores en cada unha das posicións de matriz.
O método normal de crear unha matriz que vimos que era a través do obxecto de matriz, poñendo o número de caixas de matriz entre parénteses ou non poñendo nada, de xeito que a matriz se crea sen ningunha posición. Para entrar en valores a unha matriz convértese na mesma, pero poñer entre o paréntese os valores cos que queremos cubrir as caixas separadas por un coma. Vexámolo cun exemplo que crea unha matriz cos nomes dos días da semana.
var diasSemana = new Array("Lunes","Martes","Miércoles,","Jueves","Viernes","Sábado","Domingo")
A matriz créase con 7 caixas, de 0 a 6 E en cada caixa está escrita o día da semana correspondente (entre as comiñas porque é un texto).
Agora imos ver algo máis complicado, trátase de declarar a matriz bidimensional que usamos antes para temperaturas das cidades nos meses nunha soa liña, introducindo os valores á vez.
var temperaturas_cuidades = new Array(new Array (12,10,11), new Array(5,0,2),new Array(10,8,10))
No exemplo que entramos en cada caixa de matriz Outro Array que ten como valora as temperaturas dunha cidade en cada mes.
JavaScript aínda ten un xeito máis resumido do que acabamos de ver, que explicamos no primeiro artigo onde tratamos as matrices. Para iso, simplemente escribimos entre parénteses os datos da matriz que estamos creando. Para rematar, mostraremos un exemplo sobre como usar esta sintaxe para declarar as matrices de máis dunha dimensión.
var arrayMuchasDimensiones = , , "acabo"], 2, 5];
Neste exemplo creamos un xeito moi uniforme Array, porque contiña caixas con contido de sinxelos e outros con contido de cadea e outros que son outras arrays. Poderiamos acceder a algunhas das súas caixas e mostrar os seus valores deste xeito:
alert (arrayMuchasDimensiones)alert (arrayMuchasDimensiones)alert (arrayMuchasDimensiones)
Con isto chegamos ao final dos elementos que tratan Arrays en JavaScript e agora podemos continuar cunha pequena pausa e consellos que virán ben para mellorar a nosa relación con esta linguaxe de programación.