Copia de un array en Javascript

En casi todos los desarrollos es común el uso del tipo array para almacenar elementos. Muchas veces queremos guardar una copia de una array por si lo necesitamos restaurar de nuevo a su estado inicial. En tal caso haríamos algo similar a esto:

var a = [1, 2];
var b = a;

Ahora si modificamos un elemento de a:

a[0] = 3;

Podremos restaurar de nuevo nuestro array que teníamos en b, ¿No?

a = b;

La respuesta es NO, ya que si vemos el contenido de b comprobaremos que el elemento 0 también se ha modificado. Lo que ha sucedido con la asignación entre dos variables, una de las cuales es de tipo array, es que hemos creado un puntero al mismo objeto y por tanto no hemos guardado un array con los valores iniciales.

Para conseguir nuestro objetivo tendremos que recurrir a un pequeño truco que crea un nuevo array:

var b = [].concat(a);

El código de arriba lo que hace es crear un nuevo array que es el resultado de concatenar a un array vacío el array a. De esta manera, modificando los valores del array a conseguimos que los valores del array b queden inalterados.