- ¿Qué es el operador rest (...)?
- Casos de Uso
- Omitir elementos con la desestructuración
- Alternativa: slice()
- Usar rest con cadenas de texto
Cuando trabajamos con arrays en JavaScript, muchas veces queremos extraer solo algunos elementos y guardar el resto en una nueva variable. Aquí es donde entra en juego la desestructuración junto con el operador rest (...), una herramienta poderosa que hace nuestro código más limpio y fácil de leer.
¿Qué es el operador rest (...)?
🍊🍌🍍 Imagina que tienes una lista de frutas y solo quieres obtener la primera, dejando el resto en otro grupo. Con la desestructuración y el operador ...rest, esto es fácil de lograr:
const fruits = ['apple', 'orange', 'banana', 'pineapple'];
// Usamos el operador rest (...) para obtener el resto de elementos del array
const [first, ...rest] = fruits;
console.log(first); // 'apple'
console.log(rest); // ['orange', 'banana', 'pineapple']
Explicación
- Extraemos el primer elemento del array y lo asignamos a
first. - Usamos
...restpara capturar todos los elementos restantes y guardarlos en una nueva variablerest. - La variable
restsiempre será un array con los elementos que sobran.
Casos de Uso
Podemos usar el operador rest para capturar diferentes cantidades de elementos fácilmente:
const fruits = ['apple', 'orange', 'banana', 'pineapple'];
const [head, ...tail] = fruits;
console.log(tail); // ['orange', 'banana', 'pineapple']
const [first, second, ...rest] = fruits;
console.log(rest); // ['banana', 'pineapple']
const [first, second, third, ...rest] = fruits;
console.log(rest); // ['pineapple']
rest:
- Siempre debe estar al final de la lista de variables.
- Si no quedan más elementos al desestructurar, el array restante será vacío (
[]).
⏬ Ejemplo:
const [first, second, third, fourth, ...rest] = fruits;
console.log(rest); // []
Omitir elementos con la desestructuración
Si queremos saltarnos algunos elementos del array sin asignarlos a variables, podemos hacerlo dejando espacios vacíos entre comas:
const [first, , third, ...rest] = fruits;
console.log(third); // 'banana'
console.log(rest); // ['pineapple']
En este caso:
firstobtiene'apple'.- El segundo elemento (
orange) se omite con una coma extra,. thirdobtiene'banana'.restcontiene['pineapple'].
Alternativa: slice()
Si solo queremos obtener una parte del array sin usar desestructuración, podemos usar .slice().
const rest = fruits.slice(1); // Obtiene todos los elementos después del primero
console.log(rest); // ['orange', 'banana', 'pineapple']
Diferencias principales:
| Método | Qué hace | Modifica el original |
|---|---|---|
...rest |
Extrae elementos restantes al desestructurar un array | ❌ No |
slice() |
Crea un nuevo array con ciertos elementos | ❌ No |
Usar rest con cadenas de texto
El operador ...rest también funciona con cadenas de texto, ya que en JavaScript las cadenas pueden tratarse como arrays de caracteres:
const [primero, segundo, ...resto] = 'ejemplo de texto';
console.log(primero); // 'e'
console.log(segundo); // 'j'
console.log(resto); // ['e', 'm', 'p', 'l', 'o', ' ', 'd', 'e', ' ', 't', 'e', 'x', 't', 'o']
resto es un array de caracteres, no una cadena de texto.
Resumen
- El operador
...restpermite capturar el resto de los elementos de un array después de la desestructuración. - Siempre debe estar al final de la lista de variables.
- Si no quedan más elementos,
restserá un array vacío[]. - Se pueden omitir elementos dejando espacios vacíos en la desestructuración
[, , ...]. - Si solo se quiere una parte del array sin desestructuración,
.slice()es una buena alternativa. - También se puede usar con cadenas de texto, pero el resultado será un array de caracteres.
Ahora que conoces el operador rest, ¡pruébalo en tu código y hazlo más limpio y legible!
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.