JS: Copiar un Array por Valor (Clonar)




Si intentamos copiar un arreglo a otra variable por valor, es decir duplicándolo, de esta manera:

var arr1 = ['a','b','c'];
var arr2 = arr1;
arr2.push('d');  //ahora, arr1 = ['a','b','c','d']

nos damos cuenta que en la última linea se modifican tanto arr2 como arr1, es decir, se hizo la copia del array por referencia. La forma correcta de realizar una copia por valor es la siguiente:

var arr2 = arr1.slice(0);

La función slice() clona el array y retorna la referencia del nuevo array. Su nombre no es muy intuitivo porque su función original es otra, la de copiar determinada porción de un array en otro. Su sintaxis es:

arr.slice(desde[, hasta])

A tener en cuenta:
  • Los elementos del array que son referencias a objetos, son copiados manteniendo esta referencia.
  • Para cadenas de texto (strings), números, objetos u otros arrays, son copiados por valor.

No hay comentarios:

Publicar un comentario