Arreglos - Métodos para agregar y quitar elementos
Extraer y Modificar Partes de Arreglos: slice() y splice()
🔪 slice()
: Extrayendo una Porción (Sin Modificar)
El método slice()
(“rebanar”) nos permite crear una copia superficial de una porción de un arreglo existente, sin modificar el arreglo original. Es como cortar una rebanada de un pastel sin afectar el resto.
Funciona con dos argumentos opcionales:
inicio
: El índice donde comienza la extracción (incluido).fin
: El índice donde termina la extracción (excluido).
let animales = ["Perro", "Gato", "Conejo", "Hamster", "Pez"];
// Extraer desde el índice 1 hasta el 3 (sin incluir el 3)let mamiferosPequeños = animales.slice(1, 3);console.log(mamiferosPequeños); // Muestra ["Gato", "Conejo"]
// Extraer desde el índice 2 hasta el finallet roedoresYPecez = animales.slice(2);console.log(roedoresYPecez); // Muestra ["Conejo", "Hamster", "Pez"]
// Extraer los últimos 2 elementos (usando índice negativo)let ultimosDos = animales.slice(-2);console.log(ultimosDos); // Muestra ["Hamster", "Pez"]
// Crear una copia completa del arreglolet copiaAnimales = animales.slice();console.log(copiaAnimales); // Muestra ["Perro", "Gato", "Conejo", "Hamster", "Pez"]
// IMPORTANTE: El arreglo original NO cambiaconsole.log(animales); // Muestra ["Perro", "Gato", "Conejo", "Hamster", "Pez"]
💡 slice()
es ideal cuando necesitas una parte de un arreglo para trabajar
con ella sin riesgo de alterar el original.
✨ splice()
: Modificando el Arreglo Original
El método splice()
(“empalmar” o “insertar”) es mucho más poderoso (¡y potencialmente destructivo!). Modifica el contenido de un arreglo eliminando, reemplazando o agregando elementos nuevos directamente en el original.
También devuelve un arreglo con los elementos eliminados, si los hubiera.
Funciona con al menos un argumento, y opcionalmente más:
inicio
: El índice donde comenzar a cambiar el arreglo.cantidadAEliminar
(opcional): El número de elementos a eliminar desdeinicio
.elemento1, elemento2, ...
(opcional): Los elementos a agregar al arreglo, comenzando desdeinicio
.
Eliminar Elementos
let letras = ["a", "b", "c", "d", "e"];
// Eliminar 1 elemento desde el índice 2 ('c')let letrasEliminadas = letras.splice(2, 1);
console.log(letras); // Muestra ['a', 'b', 'd', 'e'] (¡Original modificado!)console.log(letrasEliminadas); // Muestra ['c']
// Eliminar 2 elementos desde el índice 1 ('b', 'd')let masEliminadas = letras.splice(1, 2);console.log(letras); // Muestra ['a', 'e']console.log(masEliminadas); // Muestra ['b', 'd']
Reemplazar Elementos
Simplemente proporciona los nuevos elementos después de la cantidad a eliminar.
let numeros = [1, 2, 3, 4, 5];
// Reemplazar 1 elemento en el índice 1 (el 2) por 99let reemplazados = numeros.splice(1, 1, 99);
console.log(numeros); // Muestra [1, 99, 3, 4, 5]console.log(reemplazados); // Muestra [2]
Agregar Elementos (sin eliminar)
Establece cantidadAEliminar
en 0
.
let colores = ["Rojo", "Verde", "Azul"];
// Agregar "Amarillo" y "Naranja" en el índice 1 (sin eliminar nada)colores.splice(1, 0, "Amarillo", "Naranja");
console.log(colores); // Muestra ["Rojo", "Amarillo", "Naranja", "Verde", "Azul"]
🔥 ¡Recuerda! splice()
SIEMPRE modifica el arreglo original. Úsalo con
cuidado, especialmente si otras partes de tu código dependen de ese arreglo.
🤔 ¿Cuándo Usar Cuál?
- Usa
slice()
cuando necesites obtener una copia de una parte (o todo) del arreglo sin afectar el original. - Usa
splice()
cuando necesites modificar el arreglo original eliminando, agregando o reemplazando elementos en una posición específica.
☝️🤓
🏋️♂️ Ejercicio
Dado el arreglo: let codigo = ["React", "Vue", "Angular", "Svelte", "Solid"];
- Usa
slice()
para crear un nuevo arregloframeworksPopulares
que contenga solo “React”, “Vue” y “Angular”. - Usa
slice()
para crear un nuevo arregloultimosFrameworks
que contenga los últimos dos elementos del arreglocodigo
. - Verifica que el arreglo
codigo
original no haya cambiado después de las operaciones anteriores.
🏋️♂️ Ejercicio
Dado el arreglo: let tareas = ["Estudiar", "Comer", "Dormir"];
- Usa
splice()
para insertar la tarea"Trabajar"
después de"Estudiar"
. - Usa
splice()
para reemplazar"Dormir"
con"Jugar"
y"Relajarse"
. - Usa
splice()
para eliminar"Comer"
del arreglo. - Muestra el arreglo
tareas
final después de todas las modificaciones.
🚀 Extra
Investiga sobre:
- ¿Qué significa que
slice()
crea una “copia superficial” (shallow copy)? ¿Qué implicaciones tiene si el arreglo contiene objetos u otros arreglos? - ¿Cómo podrías usar
splice()
para vaciar completamente un arreglo? Compara esta forma conmiArreglo.length = 0
. - Los métodos más nuevos
toSpliced()
. ¿Qué problema resuelve comparado consplice()
?