El método slice
devuelve la copia de un array con la posibilidad de especificar el inicio y el final de la copia. Sin que el array original se vea afectado.
En el caso de strings
, extrae una sección del mismo y devuelve uno completamente nuevo. Sin que el primer string
se vea afectado.
let original = ["🌭 Hot dog", "🍕 Pizza", "🍎 Apple", "🌮 Taco", "🥦 Broccoli"];
let clone = original.slice(3);
console.log(clone) // ["🌮 Taco", "🥦 Broccoli"]
Sintaxis
array.slice(inicio, fin);
string.slice(inicio, fin);
inicio
Valor opcional inicial en donde el método va a comenzar a realizar la copia.
Si se omite, el valor por defecto es 0
.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(2);
console.log(clone); // 3, 4, 5
Si el valor llega a ser mayor o igual a la longitud del array, este devuelve un array vacío.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(5);
console.log(clone); // []
fin
Valor opcional que especifica hasta donde se va a copiar el array. Tomando en cuenta el último valor.
Si se omite, slice
tomara el array hasta el final..
let array = [1, 2, 3, 4, 5];
let clone = array.slice(0, 3);
console.log(clone); // [1, 2, 3]
Si el valor llega a ser mayor a la longitud del array, se tomara el array hasta el final.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(0, 10);
console.log(clone); // [ 1, 2, 3, 4, 5 ]
Valores negativos
Además de números positivos, slice
puede recibir números negativos. Dependiendo del lugar en el que se encuentren es como se va a comportar.
En el caso del primer parámetro. Si se llega a pasar un número negativo, el conteo será de atrás hacia adelante. Es decir desde el último hasta el primero.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(-2);
let otherClone = array.slice(-4);
console.log(clone); // [ 4, 5 ]
console.log(otherClone); // [ 2, 3, 4, 5 ]
Para el caso del segundo parámetro. Si se llega a pasar un número negativo, el final comienza de atrás hacia adelante, pero sin tomar los elementos, solo especifica hasta donde se va a llegar.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(0, -2);
let otherClone = array.slice(1, -2);
console.log(clone); // [1, 2, 3]
console.log(otherClone); // [2, 3]
Y por si te le lo preguntas, si, también los dos valores pueden ser negativos.
let array = [1, 2, 3, 4, 5];
let clone = array.slice(-2, -1);
console.log(clone); // [ 4 ]
strings
El método slice
además de trabajar con arrays, también puede trabajar con strings
, devolviendo uno completamente nuevo, aplicando las mismas reglas de sintaxis.
let string = "Hola Mundo, soy Fili!";
console.log(string.slice(5)); // Mundo, soy Fili!
console.log(string.slice(0, 10)); // Hola Mundo
console.log(string.slice(-5)); // Fili!
console.log(string.slice(0, -2)); // Hola Mundo, soy Fil