Unir arrays

Mediante el método array.concat() podemos crear un nuevo array agregando al array original los elementos usados como argumentos, que pueden ser elementos simples u otros arrays u objetos., solos o mezclados.

Hay que señalar que no se trata de una copia en profundidad sino que solo se copian valores simples. Si se pasa un array como argumento se copian sus valores sin son valores simples.

Es decir si en el argumento se usa una variable objeto (distinto de Array sencillo o plano) lo que se copia al nuevo array es una referencia al mismo. Si se cambia el original se cambia lo copiado y viceversa.

En resumen solo se copian valores primitivos como cadenas, números o booleanos, para el resto se copian referencias.

var invierno = ['peras', 'manzanas', 'platanos'];

var verano = ['melón', 'sandía','higos', 'albaricoque'];

var anuales

anuales = invierno.concat(verano)

console.log(anuales)

Los arrays original y concatenado no se modifican, sino que se crea un nuevo array con los elementos de los usados en el argumento del método.

Este sería el uso más normal de este método, pero en alguna situación puede que se necesite mezclar objetos y datos primitivos, en cuyo caso hay que recordar que los objetos son referencias.

Por tanto si el argumento usa objetos que no sean arrays simples, lo que se copian son referencias, no valores.

var clase = ['Historia', 'Lengua', 'Dibujo'];

var tutoria = {nombre: "Pedro", aula: 120};

var curso = clase.concat(tutoria);

console.log(curso);

console.log("Tutoria es de: "+curso[3].nombre);

tutoria.nombre = "Maria";

console.log("Tutoria es de: "+curso[3].nombre);

Se ha concatenado al array clase el objeto tutoria. Al aplicar el método se crea un nuevo array, curso cuyos elementos 0 al 2 son cadenas, pero el cuarto elemento no es un valor sino una referencia al objeto tutoria. De manera que si hay un cambio en este objeto se refleja en el array recién creado. Sin embargo los cambios hechos en el array clase no afectan al nuevo array.

Algo similar ocurre si se usan arrays anidados, los arrays anidados se toman como referencias no se copian sus valores.

scripts