El objeto Array

Listas de datos

A pesar de su extraño nombre los arrays no son más que estructuras para almacenar listas de valores. Los arrays son objetos para javascript.

Por ahora puedes ver un array como una lista con nombre donde podemos anotar cosas, guardar datos. Cada dato se identifica por su número de orden en la lista, su índice.

La propiedad más elemental del array es su longitud, el número total de posiciones donde guardar valores. Se encuentra almacenado en la propiedad miArray.length

Si en un array tenemos anotados 5 números, el primero de todos será el de índice 0 y el último tendrá como índice el 4, siendo 5 la longitud del array. Simple ¿verdad?. Recuerda siempre el último indice de un array es su longitud menos 1.

Un array puede contener cualquier tipo de datos, incluidos otros arrays. Y los elementos de un mismo array pueden ser de distintos tipos. Unos items pueden ser números, otros cadenas de caracteres, otros lógicos, otros arrays...

Si construyes un array donde los elementos son a su vez arrays tienes un array de dos dimensiones. Lo que en matemáticas se llama matriz: Como una cuadrícula donde cada elemento se identifica por dos índices.

Se accede a cualquier elmento de un array mediante el nombre del array y un índice que indica la posición del elmento que se quiere eller. Los índice comienzan en 0, por tanto el índice más alto del array es una unidad menor que su longitud. Si se quiere leer una posición por encima se obtine undefined.

También se pueden anotar datos a un array po el mismo mecanismo, el la posición de elmento se le asigna el valor que se quiera anotar. Si el ínidice es mayor o igual a la longitud se añade un nuevo elemento, no se obtiene error.

var gente = ["Pedro", "Luis", "María", "Luisa"];

var orden = 3;

console.log("La primera persona es "+gente[0])

console.log("La última persona es "+gente[gente.length-1])
gente[5] = "Ana";

console.log(gente);

Observa que en la última sencia aparece que el elemento 4 es empy, eso ha ocurrido porque se ha añadido un valor a un elemento con índice por encima del índice máximo y no correlativo, los elementos intermedios no tiene valor por eso aparecen como vacios (empty), no se ven como null ni como undefined

Resumen

Puedes ver el array como un objeto con fomra de lista, donde se guardan valores en orden.

Cada elemento de ese objeto tiene como clave su número de orden o índice.

El nombre de cada elemento se compone co el nombre del array y el número de orden del elemento.

El operador delete puede usarse para borrar el contenido de una posición dentro del array dejándola vacía (empty). El array mantiene su longitud.

Array bidimensional

Los elementos de un array pueden ser de cualquier tipo incluso otros array. Supongamos que para anotar los turnos de trabajo de una semana usamo un array turnos, cada elemento es un día y se identifica por un índice turno[ind_dia]

var turnos = new Array();

turnos[0] = ['Lunes', 'Pedro'];

turnos[1] = ['Martes', 'María'];

turnos[2] = ['Miércoles', 'Luis'];

turnos[3] = ['Jueves', 'Juan'];

turnos[4] = ['Viernes', 'Ana']

console.log( "El " +turnos[2][0]+" es "+turnos[2][1]);

Pero cada elemento del array turnos es a su vez otro array. Cada día es un par: nombre del día y persona, un array

Tienes un array bidimensional, cada elemento tiene dos índices. Así turnos[1] es ['Martes', 'Maria'], dentro de este array el indice 0 es Martes y el 1 es María, así que turnos[1][0] es 'Martes' y turnos[1][1] es "María". Una representación del array turnos

turnos
0 Lunes Pedro
1 Martes Maria
2 Miercoles Luis
3 Jueves Juan
4 Viernes Ana

El array turnos  se ha creado como un array vacio y luego ha ido creciendo al irle adjudicando los valores array [dia, nombre].

Has visto qeu un array puede crecer sin más que añadirle un nuevo elemento. También puedes borrar contenidos con la instrucción delete, pero cuidado esta instrucción no elimina el elemento del array solo lo deja vacio

console.log( turnos.length); // 5

delete turnos[3];

console.log( turnos.length); // 5

console.log( turnos[3]); // undefined

Tras borrar con delete el elemento turnos[3] esta posición queda vacía, pero no eliminada del array que sigue teniendo longitud 5.

Multidimensión

Un array puede tener más de dos dimensiones. Es como una fecha, un día tiene tres índices: día del mes, mes del año y año en el siglo.: 23/12/21

Por ejemplo ampliamos la lista turnos para que sea tridimensional. ¿Como? un array, donde cada elemento es otro array, cuyos elementos son también arrays. Eso sería un array tridimensional.

En el ejemplo esto lo haremos haciendo que cada día de la semana tenga a su vez dos turnos (array), y cada turno uno sea un para tarde - persona (array).

turnos[0] = [ ['tarde', 'Pedro'], ['noche', 'Luis'] ];

turnos[1] = [ ['tarde', 'Maria'], ['noche', 'Ana] ];

...

El elemento turnos[0][0] es [tarde, pedro] y turnos[0][0][0] es tarde mientras que turno[0][0][1] es Pedro.

El elmento turnos[1][1] es ['noche', 'Ana'], turnos[1][1][0] contiene noche, y el [1][1][1] contiene Ana

Es decir el primer indice daría el número de orden en la semana (digamos el día), el segundo indice indica la parte del dia, y el tercer indice indica la persona.

Iterar un array

Esta operación es bastante habitual en las listas: recorrerlas para buscar un elemento, modificarlo, cambiarlo....

Existen métodos usando las llamadas funciones callback, pero es bueno entender y aprender a iterar de forma elemental. Y con las listas esta operación es muy evidente.

Supón que tienes una lista de precios y quieres doblarlos todos. No puedes ir uno por uno, supón que son 1000 elementos o que la lista puede cambiar al cambiar tu catálogo.

Para esto están los iteradores. Vamos con lo más simplo de lo simple ue además te servirá apra conocer una estrcutrua de controlde flujo fundamental en programación: los bucles.

var precios = Array(200, 300, 120, 300, 100);

var indice;

for(indice = 0; indice < precios.length; indice++)

{

precios[indice] = precios[indice]*2;

}

Despues de ejecutar este script los precios de la lista han duplicado.

La construcción for(let indice = 0; indice < precios.length; indice++){ }, es un bucle: algo que se repite una y otra vez hasta que se da una cierta condición.

Observa se usa la variable indice para recorrer todo el array. En esa instrucción for, primero se le asigna el valor 0. Eso solo lo hace una vez, es previo al bucle.

Se comprueba si indice es menor que la longitud del array precios, entonces realiza las instrucciones que haya entre las llaves { }. Por último incremente en 1 el valor de indice con la instrucción indice++. Ahora vuelve a repetir del ciclo volviendo a comparar indice con la longitu d ela lista....así hasta que indice es igual a la longitud de precios. Ahí acaba el bucle y no se repite más.

Esta es la forma básica para recorrer una lista. En esta ocasión hemos hecho el recorrido desde la posición 0 a la último, pero también se puede hacer al revés.

Iterar

En general todos lo objetos se pueden recorrer para leer sus propiedades iterables.

La forma más elemental de hacerlo es con bucles: for o Do o While.

Los objetos suelen proveer métodos para relizar estas operaciones iterativas de forma simple.