Создать независимую копию JavaScript массива

В JavaScript все присваивания объектов реализуются через передачу ссылок на них.


var oldArray = ["a", "b", "c"];
var newArray = oldArray;

Хоть мы и получили две разные переменные, но тем не менее они обе ссылаются на один и тот же объект массива. Если сейчас в одном массиве произвести какие-либо манипуляции с элементами, то аналогичные изменения можно будет увидеть и в другом.

Если вы хотите сделать независимую копию массива, то нужно использовать метод slice без аргументов.


var oldArray = ["a", "b", "c"];
var newArray = oldArray.slice();

Массивы oldArray и newArray будут состоять из одних и тех же элементов, но фактически это будут разные объекты.

Важно запомнить, что если массив состоит из сущностей Array или Object, то они по прежнему будут ссылаться на родительские объекты.