Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Spread y creación de nuevos arrays JS: Arrays

Hasta ahora, hemos aprendido cómo podemos usar el operador rest (...) para recoger varios elementos en un solo array. Ahora vamos a conocer a su compañero: el operador spread. Aunque tienen la misma sintaxis (...), hacen cosas opuestas.

Mientras rest junta elementos en un solo array, spread los expande, permitiéndonos copiar o combinar arrays de manera más sencilla y flexible.

Expandir arrays con spread

Imagina que tenemos un array con ciudades de Francia y queremos crear un nuevo array que también contenga algunas ciudades de Italia. Podemos hacer esto usando el operador spread:

const frenchCities = ['paris', 'marseille'];
const cities = ['milan', 'rome', ...frenchCities];

console.log(cities);
// ['milan', 'rome', 'paris', 'marseille']

Lo que está pasando aquí

  • ...frenchCities toma todos los elementos de frenchCities y los "expande" en el nuevo array.
  • El array frenchCities original no se modifica.
  • Básicamente, es como si hubiéramos escrito:
  const cities = ['milan', 'rome', 'paris', 'marseille'];

Alternativa sin spread

Sin el operador spread, podríamos hacer esto mismo con el método .concat():

const cities = ['milan', 'rome'].concat(frenchCities);

✅ Ambas opciones producen el mismo resultado, pero usar spread*es más limpio y más fácil de leer.

Ubicación flexible del spread

Algo genial de spread*es que no tiene que ir solo al final de un array. Podemos colocarlo en cualquier parte:

Al inicio

const cities = [...frenchCities, 'milan', 'rome'];
console.log(cities);
// ['paris', 'marseille', 'milan', 'rome']

Aquí, primero expandimos frenchCities, y luego agregamos 'milan' y 'rome'.

En medio

También podemos usar spread para insertar elementos en el medio de un array:

const cities = ['milan', ...frenchCities, 'rome'];
console.log(cities);
// ['milan', 'paris', 'marseille', 'rome']

Sin spread, no hay una forma sencilla de hacer esto en una sola línea.

Combinar múltiples arrays

No solo podemos expandir un solo array, sino que también podemos combinar varios arrays fácilmente:

const frenchCities = ['paris', 'marseille'];
const italianCities = ['rome', 'milan'];
const cities = [...frenchCities, ...italianCities];

console.log(cities);
// ['paris', 'marseille', 'rome', 'milan']

Alternativa sin `spread:

const cities = frenchCities.concat(italianCities);

✅ De nuevo, spread nos permite escribirlo de forma más compacta y legible.

Copiar un array con spread

Una de las formas más comunes de usar spread es copiar un array. Esto es útil cuando queremos modificar la copia sin afectar el original.

const frenchCities = ['paris', 'marseille'];
const copy = [...frenchCities];

copy.push('lyon');

console.log(copy);         // ['paris', 'marseille', 'lyon']
console.log(frenchCities); // ['paris', 'marseille']

¿Por qué copiar un array así?

Si hubiéramos hecho esto en su lugar:

const copy = frenchCities;

Ambas variables habrían apuntado al mismo array en memoria, y modificar copy también cambiaría frenchCities.

Alternativa sin spread:

const copy = frenchCities.slice();

✅ El operador spread nos permite hacer esto de manera más limpia.


Resumen

  • El operador ...spread expande los elementos de un array, a diferencia de rest, que los agrupa.
  • Se usa a la derecha del signo = cuando construimos nuevos arrays.
  • Podemos usar spread en cualquier parte del array: al inicio, en medio o al final.
  • Sirve para combinar múltiples arrays en uno solo.
  • Es una forma sencilla de hacer copias de arrays sin modificar el original.

Ahora que lo conoces, ¡pruébalo en tu código y verás lo útil que es!

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.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY