Los arrays (también llamados arreglos o matrices) cuentan con muchos métodos. Para hacer las cosas más sencillas, en este capítulo los separamos en grupos.
Agregar/remover ítems
Ya conocemos algunos métodos que agregan o extraen elementos del inicio o final de un array:
arr.push(...items)– agrega ítems al final,arr.pop()– extrae un ítem del final,arr.shift()– extrae un ítem del inicio,arr.unshift(...items)– agrega ítems al principio.
Veamos algunos métodos más.
splice
¿Cómo podemos borrar un elemento de un array?
Los arrays son objetos, por lo que podemos intentar con delete:
let arr = ["voy", "a", "casa"];
delete arr[1]; // remueve "a"
alert( arr[1] ); // undefined
// ahora arr = ["voy", , "casa"];
alert( arr.length ); // 3
El elemento fue borrado, pero el array todavía tiene 3 elementos; podemos ver que arr.length == 3.
Es natural, porque delete obj.key borra el valor de key, pero es todo lo que hace. Esto está bien en los objetos, pero en general lo que buscamos en los arrays es que el resto de los elementos se desplace y se ocupe el lugar libre. Lo que esperamos es un array más corto.
Por lo tanto, necesitamos utilizar métodos especiales.
El método arr.splice funciona como una navaja suiza para arrays. Puede hacer todo: insertar, remover y remplazar elementos.
La sintaxis es:
arr.splice(start[, deleteCount, elem1, ..., elemN])
Esto modifica arr comenzando en el índice start: remueve la cantidad deleteCount de elementos y luego inserta elem1, ..., elemN en su lugar. Lo que devuelve es un array de los elementos removidos.
Este método es más fácil de entender con ejemplos.
Empecemos removiendo elementos:
let arr = ["Yo", "estudio", "JavaScript"];
arr.splice(1, 1); // desde el índice 1, remover 1 elemento
alert( arr ); // ["Yo", "JavaScript"]
¿Fácil, no? Empezando desde el índice 1 removió 1 elemento.
En el próximo ejemplo, removemos 3 elementos y los reemplazamos con otros 2:
let arr = ["Yo", "estudio", "JavaScript", "ahora", "mismo"];
// remueve los primeros 3 elementos y los reemplaza con otros
arr.splice(0, 3, "a", "bailar");
alert( arr ) // ahora ["a", "bailar", "ahora", "mismo"]
Aquí podemos ver que splice devuelve un array con los elementos removidos: