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.

Nota

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.

Nota

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

Recursos