Fusionar arrays sin mutar el original

Clase 20 de 24Curso de Manipulación Avanzada de Datos con JavaScript

Resumen

Unir arrays sin romper el estado es clave para escribir código limpio y predecible. Aquí verás cómo evitar mutaciones, por qué un array anidado causa problemas, y cómo el split operator y flat permiten resultados claros y mantenibles.

¿Cómo fusionar arrays sin mutar el estado?

Fusionar correctamente evita efectos secundarios y referencias inesperadas. La idea central: no alterar el array original cuando solo necesitas un resultado combinado para un procesamiento puntual.

¿Qué hace push al unir arrays?

  • push agrega elementos y muta el array original.
  • Si pasas un array, agrega el array completo como un solo elemento.
  • El resultado es un array anidado que luego habría que aplanar.
const numbers = [1, 2, 3]; const letters = ['A', 'B', 'C']; // Agrega TODO el array como un solo elemento (anidado) y muta numbers. numbers.push(letters); console.log(numbers); // [1, 2, 3, ['A', 'B', 'C']]

¿Por qué concat puede ser un problema?

  • concat agrega elementos al final sin anidarlos.
  • Según lo explicado, muta el array original durante la fusión.
  • Si ya hubo mutaciones previas, puedes “corromper” el estado y crear niveles de arrays.
let numbers = [1, 2, 3]; const letters = ['A', 'B', 'C']; // Une los elementos al final. En el flujo descrito, se considera una operación mutable. numbers = numbers.concat(letters); console.log(numbers); // [1, 2, 3, 'A', 'B', 'C']

¿Cómo usar el split operator para aplanar y fusionar?

  • El split operator toma los valores del array, no el array como tal.
  • Permite crear un nuevo array sin mutar el original.
  • Evita el nested array y produce una lista plana.
const numbers = [1, 2, 3]; const letters = ['A', 'B', 'C']; // Fusión inmutable en un NUEVO array con valores aplanados. const merged = [...numbers, ...letters]; // usando split operator en arrays console.log(merged); // [1, 2, 3, 'A', 'B', 'C'] // El original permanece separado del resultado de procesamiento de datos. console.log(numbers); // [1, 2, 3]

¿Qué errores crean arrays anidados y cómo prevenirlos?

Los arrays anidados aparecen cuando agregas un array como elemento. Esto complica índices, recorridos y lógica. La prevención es preferible a “arreglar” después, ya que la mutación acumulada corrompe el estado y produce efectos secundarios.

¿Cómo se ve un nested array y cómo aplanarlo?

  • Agregar arrays con push causa anidamiento inmediato.
  • Si ya tienes niveles de arrays, usa flat para aplanar.
  • La mejor práctica: evitar llegar a este punto con split operator.
// Caso con anidación. const numbers = [1, 2, 3]; const letters = ['A', 'B', 'C']; numbers.push(letters); console.log(numbers); // [1, 2, 3, ['A', 'B', 'C']] // Aplanar cuando ya existe anidación. const flattened = numbers.flat(); console.log(flattened); // [1, 2, 3, 'A', 'B', 'C'] // Prevención desde el inicio (fusión sin anidar y sin mutar el original). const cleanMerge = [...[1, 2, 3], ...['A', 'B', 'C']]; console.log(cleanMerge); // [1, 2, 3, 'A', 'B', 'C']

¿Cómo practicar mutabilidad e inmutabilidad con un reto?

La mejor forma de asimilar mutabilidad e inmutabilidad es probar y predecir resultados. Observa cómo el uso de referencias, copias y operaciones cambia el estado.

¿Qué casos deberías probar para validar tu comprensión?

  • Asignación por referencia con igual: const copia = original.
  • Mutación posterior en la copia con push y su efecto en original.
  • Fusión con concat y revisión del estado final.
  • Fusión inmutable con split operator y verificación de que el original no cambia.
  • Aplanado con flat cuando ya hay un nested array.

Anímate a compartir qué retorna cada caso y si identificas mutaciones o efectos secundarios no deseados. Tu análisis puede ayudar a otros a evitar errores comunes al unir arrays.