¿Qué es rest?
rest es un operador que reúne cualquier número de argumentos en un array y podemos hacer lo que queramos con ellos. Esto nos permite hacer definiciones de funciones realmente ordenadas.
La forma común
function author(name, age, nationality) {
console.log(name, age, nationality);
}
author('William Paul Young', 64, 'Canada');
//William Paul Young, 64, Canada
La forma con rest
function author(...autor) {
console.log(autor);
}
author('Nacarid Portal', 28, 'Venezuela');
//["Nacarid Portal", 28, "Venezuela"]
Nota : Parámetros usando el operador rest deben estar en el último argumento.
¿Qué es spread?
spread es un operador que es contario a rest, porque en vez recibir datos, podemos enviarlos a partir de un array que se expone y se convierte en un listado de argumentos.
Ahora sí, ¿cómo podemos agregar elementos a un array con spread?
La forma común de agregar elementos al inicio de un array
const arr = ['Joy', 'Wangari', 'Hola'];
arr.unshift('Mundo', 'Manzana');
console.log(arr);
//["Mundo", "Manzana", "Joy", "Wangari", "Hola"]
La forma común de agregar elementos al final de un array
const arr = ['Joy', 'Wangari', 'Hola'];
arr.push('sandia', 'limon');
console.log(arr);
//["Joy", "Wangari", "Hola", "sandia", "limon"]
La forma con spread
const arr = ['Joy', 'Wangari', 'Hola'];
const newArr = ['joykare', ...arr, 'pera'];
console.log(newArr);
//["joykare", "Joy", "Wangari", "Hola", "pera"]
Al agregar un nuevo elemento al array con un spread no importa si es al inicio o al final, lo puedes hacer en cualquier de los dos lugares y no va a haber problema alguno.