690
 

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

Чтобы скопировать массив, можно воспользоваться функцией concat() объекта Array. Она предназначена для объединения двух массивов, но если мы создадим пустой массив и объеденим его с массивом, который нужно скопировать, то получим требуемую копию массива. Пример:

var arrayToCopy = [ 1, 2, 3, 4, 5 ];

var copyOfArray = [].concat(arrayToCopy);

Для удобства можно создать функцию, которая будет возвращать копию массива:

function copyArray( ar ){
	return [].concat( ar );
}

Либо можно добавить функцию copy в класс Array:

Array.prototype.copy =
	function() {
		return [].concat(this);
	};

// пример применения
var aList = [1,2,3,4,5];

var newList = aList.copy();
Добавить в закладки:
Maklay.com - Большой каталог товаров для спорта и активного отдыха

Комментарии на “Копирование массива”

  1. Таким образом вы делаете ссылку на массив, но не новый объект.

  2. @Alex
    Нет, это именно копирование массива, а не создание ссылки. Оператор [] создает новый массив, а функция concat копирует элементы. Можете проверить:
    var arrayToCopy = [1,2,3,4,5];
    var copyOfArray = [].concat(arrayToCopy);

    // Изменяем новый массив
    copyOfArray.push(6);

    console.log(arrayToCopy); // 1, 2, 3, 4, 5
    console.log(copyOfArray); // 1, 2, 3, 4, 5, 6

  3. Спасибо, удобная штука, только можно без [], так как это лишняя операция (concat() возвращает новый массив, а не изменяет текущий):

    var copyOfArray = arrayToCopy.concat();

Оставить комментарий

JSToolbox создан на основе WordPress