> Faqs > Cómo clonar un array con Javascript

Cómo clonar un array con Javascript

Quería saber la manera más práctica de clonar un array con Javascript.

Cuando digo clon me refiero a tener dos arrays distintos después de la operación de clonado, no dos referencias apuntando al mismo array.

Respuestas

La mejor manera de clonar un array es mediante el operador de propagación, spread operator.

let array = [3, 4, 5, 6, 9];
let clon = [...array];

Esta manera de clonar arrays podría servirte incluso para arrays multidimensionales:

let array2 = [5, 6, [1, 3], 9];
let clon2 = [...array2];

Pero ya que mencionas lo de tener un clon total, ten en cuenta que este tipo de clonado con arrays multidimensionales solamente te hace una copia del array principal, los arrays anidados se clonan por referencia!!!

Para poder demostrarlo mira este código:

let referencia = [1, 3];
let array3 = [5, 6, referencia, 9];
let clon3 = [...array3];

referencia[0] = 1000;

console.log(array3);
console.log(clon3);
console.log(referencia);

Tendría como salida estos arrays:

[ 5, 6, [ 1000, 3 ], 9 ]
[ 5, 6, [ 1000, 3 ], 9 ]
[ 1000, 3 ]

Compatibilidad con navegadores

Otra situación que debes tener en cuenta es la compatibilidad con navegadores. Creo que no es muy importante, dado que lo navegadores actuales todos entienden el spread operator, pero navegadores viejunos como Internet Explorer no lo entienden.

Por ello, siempre puedes clonar por el método tradicional, que sería mediante el recorrido de un array:

var array4 = [10, 12, 13];
var clon4 = [];

for (var i = 0; i < array4.length; i++) {
  clon4[i] = array4[i];
}

Este código también funcionaría en todos los navegadores, incluso los antiguos, ya que es el Javascript más tradicional.

Ten en cuenta igualmente que los arrays anidados se copiarían por referencia, en caso que tengas arrays multidimensionales. Si fuera y quieres un clon completo caso tendrías que hacer un bucle anidado.

Camila
640 27 42 6