Статьи / JavaScript


Копирование массивов

В javascript нельзя скопировать массив просто присвоив переменную с массивом другой переменной, т.к. в результате мы получим две переменные, ссылающиеся на один и тот же массив. При изменении одной переменной будет изменяться и значение другой, т.к. обе ссылаются на одно и тоже место в памяти.

 // две переменные ссылаются на один массив
var a = ["one", "two"];
var b = a;
b.pop();
console.log(a); //["one"]
console.log(b); //["one"]


Копировать массивы один в другой можно следующим образом

1. способ

var copyArray = oldArray.slice();
// slice возвращает массив значений начиная с указанного индекса.
// без аргументов с 0-индекса

2. способ

var copyArray = [].concat(oldArray);
// создаем пустой массив и объединяем со старым.
// или так
var copyArray = oldArray.concat();