Шаг 26.
Основы JavaScript.
Копирование массива

    На этом шаге мы рассмотрим особенности копирования массивов.

    Иногда требуется создать копию массива, чтобы сохранить исходные данные и предохранить их от последующих модификаций. Например, метод сортировки элементов массива, который рассмотрен ниже, изменяет исходный массив. Однако для копирования массива недостаточно присвоить его другой переменной. Используя новую переменную и оператор присваивания, мы создаем лишь новую ссылку на прежний массив, а не новый массив.

    Проиллюстрируем это на следующем примере. Выполним такой скрипт:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
var a = new Array(5, 2, 4, 8);
b = a; //Создаем новую ссылку на массив a.
alert ("a[1] = "+a[1]);
b[1] = 20;
alert ("b[1] = "+b[1]+"\na[1] = "+a[1]);
//-->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
Текст этого документа можно взять здесь.
Создайте HTML-документ, содержащий данный скрипт и выполните его в браузере.


    Обратите внимание, что при изменении первого элемента массива b, изменился также первый элемент массива a, что свидетельствует о том, что b - это ссылка на a, то есть переменные b и a содержат адрес одной и той же области памяти.

    Чтобы скопировать массив, то есть создать новый массив, элементы которого равны соответствующим элементам исходного, следует воспользоваться оператором цикла, в котором элементам нового массива присваиваются значения элементов исходного. Изменим последний скрипт следующим образом:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
var a = new Array(5, 2, 4, 8);
b = new Array();
for (i=0;i<a.length;i++)
    b[i] = a[i];
alert ("a[1] = "+a[1]);
b[1] = 20;
alert ("b[1] = "+b[1]+"\na[1] = "+a[1]);
//-->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
Текст этого документа можно взять здесь.

    Обратите внимание, что при его выполнении, изменение первого элемента массива b не изменяет соответствующего элемента массива a, что свидетельствует о том, что это разные массивы.


Разберите работу приведенного скрипта. Создайте HTML-документ, содержащий данный скрипт и выполните его в браузере.


    На следующем шаге мы рассмотрим методы объекта Array.




Предыдущий шаг Содержание Следующий шаг