UD1 - 2.2. Arrays¶
- Introducción
- Arrays de objetos
- Operaciones con Arrays
- length
- Añadir elementos
- Eliminar elementos
- splice
- slice
- Arrays y Strings
- sort
- Otros métodos comunes
Introducción¶
Son un tipo de objeto y no tienen tamaño fijo sino que podemos añadirle elementos en cualquier momento.
Se recomienda crearlos usando notación JSON:
aunque también podemos crearlos como instancias del objeto Array (NO recomendado):
Sus elementos pueden ser de cualquier tipo, incluso podemos tener elementos de tipos distintos en un mismo array. Si no está definido un elemento su valor será undefined. Ej.:
Acceder a un elemento de un array que no existe no provoca un error (devuelve undefined) pero sí lo provoca acceder a un elemento de algo que no es un array.
Operador ?.
En ES2020 (ES11) se ha incluido el operador ?. para evitar tener que comprobar nosotros que sea un array:
Arrays de objetos¶
Es habitual almacenar datos en arrays en forma de objetos, por ejemplo:
Operaciones con Arrays¶
Vamos a ver los principales métodos y propiedades de los arrays.
length¶
Esta propiedad devuelve la longitud de un array:
Podemos reducir el tamaño de un array cambiando esta propiedad:
Añadir elementos¶
Podemos añadir elementos al final de un array con push o al principio con unshift:
Eliminar elementos¶
Podemos borrar el elemento del final de un array con pop o el del principio con shift. Ambos métodos devuelven el elemento que hemos borrado:
splice¶
Permite eliminar elementos de cualquier posición del array y/o insertar otros en su lugar. Devuelve un array con los elementos eliminados. Sintaxis:
Array.splice(inicio, cantidad de elementos a extraer, 1º elemento a insertar, 2º elemento a insertar, 3º...)
Ejemplo:
ACTIVIDAD 11: 📂 UD1/act11/act11.html
Guarda en un array la lista de la compra con Peras, Manzanas, Kiwis, Plátanos y Mandarinas. Haz los siguiente con splice:
- Elimina las
Manzanas(debe quedar Peras, Kiwis, Plátanos y Mandarinas) - Añade detrás de los
PlátanosNaranjasySandía(debe quedar Peras, Kiwis, Plátanos, Naranjas, Sandía y Mandarinas) - Quita los
Kiwisy pon en su lugarCerezasyNísperos(debe quedar Peras, Cerezas, Nísperos, Plátanos, Naranjas, Sandía y Mandarinas)
slice¶
Devuelve un subarray con los elementos indicados pero sin modificar el array original (sería como hacer un substr pero de un array en vez de una cadena). Sintaxis:
Ejemplo:
Es muy útil para hacer una copia de un array:
Arrays y Strings¶
Cada objeto (y los arrays son un tipo de objeto) tienen definido el método .toString() que lo convierte en una cadena. Este método es llamado automáticamente cuando, por ejemplo, queremos mostrar un array por la consola. En realidad console.log(a) ejecuta console.log(a.toString()). En el caso de los arrays esta función devuelve una cadena con los elementos del array dentro de corchetes y separados por coma.
Además podemos convertir los elementos de un array a una cadena con .join() especificando el carácter separador de los elementos. Ej.:
Este método es el contrario del m .split() que convierte una cadena en un array. Ej.:
sort¶
Ordena alfabéticamente los elementos del array
También podemos pasarle una función que le indique cómo ordenar que devolverá un valor negativo si el primer elemento es mayor, positivo si es mayor el segundo o 0 si son iguales. Ejemplo: ordenar un array de cadenas sin tener en cuenta si son mayúsculas o minúsculas:
Como más se utiliza esta función es para ordenar arrays de objetos. Por ejemplo si tenemos un objeto alumno con los campos name y age, para ordenar un array de objetos alumno por su edad haremos:
Usando arrow functions quedaría más sencillo:
Si lo que queremos es ordenar por un campo de texto debemos usar la función toLocaleCompare:
ACTIVIDAD 12: 📂 UD1/act12/act12.html
Haz una función que ordene las notas de un array pasado como parámetro. Si le pasamos [4,8,3,10,5] debe devolver [3,4,5,8,10]. Pruébalo en la consola
Otros métodos comunes¶
Otros métodos que se usan a menudo con arrays son:
.concat(): concatena arrays
.reverse(): invierte el orden de los elementos del array
.indexOf(): devuelve la primera posición del elemento pasado como parámetro o-1si no se encuentra en el array.lastIndexOf(): devuelve la última posición del elemento pasado como parámetro o-1si no se encuentra en el array
ACTIVIDAD 13: 📂 UD1/act13/act13.html
Dado el siguiente array de objetos:
alumnado = [
{ nombre: "Sara", edad: 19 },
{ nombre: "Pepe", edad: 61 },
{ nombre: "Lara", edad: 24 },
{ nombre: "Álex", edad: 17 },
{ nombre: "Inés", edad: 31 }
];
Crea dos funciones:
ordenaEdad()que ordene por edad de mayor a menor.ordenaNombre()que ordene por nombre.
¿Qué ocurre si algún elemento del array no es un objeto? por ejemplo, alumnado.push("Fran")
Captura los posibles errores.