buenas...
@cronos, que tal! estaba observando el codigo y entiendo la idea que tienes: restaurar el array por el original cuando se vacia. lo cierto es que no ocurre asi puesto que los tipos de datos complejos se pasan como referencia y no copia. es decir,
arr es una referencia de
fdw. para hacer una copia de un array puedes utilizar cualquier funcion que devuelva un nuevo array, el mas apropiado
concat.
Código:
var a = [true, 'string', 0], b = a.concat(); // crear array y copiar ;
a.shift(); // eliminar un elemento de un array ;
alert("a: "+ a +"\nb: "+ b);