Оглавление

10. Массивы

Массив — это нумерованный набор переменных. Переменная в массиве называется элементом массива, а ее позиция в массиве задается индексом. Нумерация элементов массива начинается с 0, а не с 1. Это следует помнить. Общее количество элементов в массиве называется размером массива.
При инициализации массива переменные указываются через запятую в квадратных скобках:

  Mass1 = [1, 2, 3, 4];

Получить значение элемента массива можно, указав его индекс в квадратных скобках:

  Str = Mass1[0]; // Переменной Str будет присвоено значение 1

 

Листинг 11 демонстрирует создание массива и вывод значения элемента массива в окне Web-браузера.

 

Листинг 11. Массивы


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
 <title>Массивы</title>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<script type="text/javascript">
<!--
var Mass1, Mass2;
Mass1 = [1, 2, 3, 4];
Mass2 = ["", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", 
         "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
document.write(Mass1[1] + " и " + Mass2[2]);
//-->
</script>
</body>
</html>

 

2 и Февраль

 

При желании можно добавить новый элемент массива или изменить значение существующего:

  Mass1[5] = 6;
  Mass1[0] = 0;

В этом примере было создано два элемента массива и изменено значение существующего. Почему создано два элемента массива? Первый элемент с индексом 5 создан нами, а элемент с индексом 4 был создан автоматически и ему присвоено значение undefined (не определен), так как наш массив состоял только из 4 элементов, и последний определенный элемент имел индекс 3.
Любому элементу массива можно присвоить другой массив:

  Mass1[0] = [1, 2, 3, 4];

В этом случае получить значение массива можно, указав два индекса:

  Str = Mass1[0][2]; // Переменной Str будет присвоено значение 3

Следует учитывать, что операция присваивания сохраняет в переменной ссылку на массив, а не все его значения. Например, если попробовать сделать так

  var Mass1, Mass2;
  Mass1 = [1, 2, 3, 4];
  Mass2 = Mass1; // Присваивается ссылка на массив!!!
  Mass2[0] = "Новое значение";
  document.write(Mass1.join(", ") + "<br>");
  document.write(Mass2.join(", "));

то изменение Mass2 затронет Mass1, и мы получим следующий результат:
 

Новое значение, 2, 3, 4

Новое значение, 2, 3, 4


Чтобы сделать копию массива, можно, например, воспользоваться методом slice (), который возвращает срез массива:

  var Mass1, Mass2;
  Mass1 = [1, 2, 3, 4];
  Mass2 = Mass1.slice(0);
  Mass2[0] = "Новое значение";
  document.write(Mass1.join(", ") + "<br>");
  document.write(Mass2.join(", "));

Результат:

1, 2, 3, 4
Новое значение, 2, 3, 4

 

Необходимо заметить, что при использовании многомерных массивов метод slice () создает "поверхностную" копию, а не полную:

  var Mass1, Mass2;
  Mass1 = [[0, 1], 2, 3, 4];
  Mass2 = Mass1.slice(0);
  Mass2[0][0] = "Новое значение1";
  Mass2[1] = "Новое значение2";

В результате массивы будут вытлядеть так:
  Mass1 = [["Новое значение1", 1], 2, 3, 4];
  Mass2 = [["Новое значение1", 1], "Новое значенке2", 3, 4];

 

Как видно из примера, изменение вложенного массива в Mass2 привело к одновременному изменению значения в Mas si. Иными словами, оба массива содержат ссылку на один и тот же вложенный массив.
Более подробно мы рассмотрим массивы при изучении встроенного класса Array (см. разд. 15.5).

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити