El método concat en arrays se utiliza para tomar dos arrays y concatenarlos en uno. Toma tantos arrays como quieras - así que puedes concatenar muchos arrays a la vez:
Array.concat(value1, value2, value3, ...valueN)
Cada elemento añadido al método concat debe ser de tipo array. Veamos un ejemplo sencillo. A continuación, combinamos dos arrays:
let myArray = [ 1, 2, 3, 4, 5 ];
let newArray = [ 'n', 'a', 'e', 'k' ]
let mergedArray = myArray.concat(newArray);
console.log(mergedArray); // [ 1, 2, 3, 4, 5, 'n', 'a', 'e', 'k' ]
concat no elimina duplicados pero si estás interesado en una estructura de datos que lo haga, puede que quieras leer mi guía sobre conjuntos en Javascript.
El método concat crea una copia superficial del array al que se aplica, con la adición de cualquier otro array añadido al final.
Eso significa que aunque parezca que se crea un nuevo array, todavía tiene una conexión con el array original que modificaste. De hecho, cada array que menciones en concat es una copia superficial del original. Considera el siguiente ejemplo:
let myArray = [ { name: "John" }, 1, 2, 3, 4, 5 ];
let newArray = [ { name: "Jacob" }, 'a', 'e', 'k' ]
let mergedArray = myArray.concat(newArray);
myArray[0].name = "Jingleheimer";
newArray[0].name = "Schmidt";
newArray[1] = 5;
console.log(mergedArray, myArray); // [ { name: "Jingleheimer" }, 1, 2, 3, 4, 5, { name: "JSchmidtacob" }, 'a', 'e', 'k' ]
Cabría esperar que el cambio de nombre en myArray
y newArray
no afectara a mergedArray
, pero sí lo hace. Sin embargo, newArray[1] = 5
no tiene ningún efecto sobre mergedArray
.
La premisa básica es que los arrays que usamos en concat mantienen la misma referencia en memoria que los arrays originales. Actualizar nombre actualiza tanto el mergedArray
como los arrays originales, ya que todos se almacenan en el mismo lugar. Sin embargo, escribir newArray[1]
le dice a Javascript que ponga un valor completamente nuevo en la posición [1] de mergedArray
.
Esto es importante para recordar cuando te encuentres con extraños errores de array en Javascript.
Concatenando múltiples arrays. Hemos visto cómo concatenar dos arrays, pero concatenar más funciona de la misma manera. Usted lista todas sus matrices en la función concat así:
let myArray = [ 1, 2, 3, 4, 5 ];
let newArray = [ 'n', 'a', 'e', 'k' ]
let anotherArray = [ 7, 1, 5, 7 ]
let mergedArray = myArray.concat(newArray, anotherArray);
console.log(mergedArray); // [ 1, 2, 3, 4, 5, 'n', 'a', 'e', 'k', 7, 1, 5, 7 ]
Las matrices se fusionan en el orden en que se mencionan.
Concatenando arrays anidados. Las matrices anidadas se concatenan de la misma manera. El array exterior se elimina, lo que significa que los elementos anidados pasan a formar parte del primer array:
let myArray = [ [1, [2, 3], 4], 5 ];
let newArray = [ ['n', 'a'], 'e', 'k' ]
let mergedArray = myArray.concat(newArray);
console.log(mergedArray); // [ [1, [2, 3], 4], 57, ['n', 'a'], 'e', 'k' ]
Valores en arrays concatenados Si pasas un valor simple a concat, lo tratará como un elemento del array. Esto significa que si pasas 'valor'
en lugar de ['valor']
, lo tratará como ['valor']
de todos modos:
let myArray = [ 1, 2, 3, 4, 5 ];
let mergedArray = myArray.concat(1, 2, 3);
console.log(mergedArray); // [ 1, 2, 3, 4, 5, 1, 2, 3 ]