Создать независимую копию JavaScript массива
В JavaScript все присваивания объектов реализуются через передачу ссылок на них.
var oldArray = ["a", "b", "c"];
var newArray = oldArray;
Хоть мы и получили две разные переменные, но тем не менее они обе ссылаются на один и тот же объект массива. Если сейчас в одном массиве произвести какие-либо манипуляции с элементами, то аналогичные изменения можно будет увидеть и в другом.
Если вы хотите сделать независимую копию массива, то нужно использовать метод slice без аргументов.
var oldArray = ["a", "b", "c"];
var newArray = oldArray.slice();
Массивы oldArray и newArray будут состоять из одних и тех же элементов, но фактически это будут разные объекты.
Важно запомнить, что если массив состоит из сущностей Array или Object, то они по прежнему будут ссылаться на родительские объекты.
P.S. Медленный способ глубокого клонирования
Способ, который работает и в случае, когда в массиве есть массивы или объекты:
var newArray = JSON.parse(JSON.stringify(oldArray))
#памятка