Длина массива
Все массивы, как созданные с помощью конструктора Array(), так и определенные с помощью литерала массива, имеют специальное свойство length, устанавливающее количество элементов в массиве. Поскольку массивы могут иметь неопределенные элементы, более точная формулировка звучит так: свойство length всегда на единицу больше, чем самый большой номер элемента массива. В отличие от обычных свойств объектов, свойство length массива автоматически обновляется, оставаясь корректным при добавлении новых элементов в массив. Это обстоятельство иллюстрирует следующий фрагмент:
var a = new Array();// a.length == 0 (ни один элемент не определен)
a = new Array(10);// a.length == 10 (определены пустые элементы 0–9)
a = new Array(1,2,3);// a.length == 3 (определены элементы 0–2)
a = [4, 5];// a.length == 2 (определены элементы 0 и 1)
a[5] = _1;// a.length == 6 (определены элементы 0, 1 и 5)
a[49] = 0; // a.length == 50 (определены элементы 0, 1, 5 и 49)
Помните, что индексы массива должны быть меньше 232–1, т. е. максимально возможное значение свойства length равно 232–1.
Наиболее часто свойство length используется для перебора элементов массива в цикле:
var fruits = ["манго", "банан", "вишня", "персик"];
for(var i = 0; i < fruits.length; i++)
alert(fruits[i]);
Конечно, в этом примере предполагается, что элементы массива расположены непрерывно и начинаются с элемента 0. Если это не так, перед обращением к каждому элементу массива нужно проверять, определен ли он:
for(var i = 0; i < fruits.length; i++)
if (fruits[i] != undefined) alert(fruits[i]);
Аналогичный подход может использоваться для инициализации элементов массива, созданного вызовом конструктора Array():
var lookup_table = new Array(1024);
for(var i = 0; i < lookup_table.length; i++)
lookup_table[i] = i * 512;
Свойство length массива доступно как для чтения, так и для записи. Если установить свойство length в значение, меньшее текущего, массив укорачивается до новой длины; любые элементы, не попадающие в новый диапазон индексов, отбрасываются, и их значения теряются.
Если сделать свойство length большим, чем его текущее значение, в конец массива добавляются новые неопределенные элементы, увеличивая массив до нового размера.
Обратите внимание: хотя объектам могут быть присвоены элементы массива, объекты не имеют свойства length. Это свойство и его специальное поведение – наиболее важная особенность, свойственная массивам. Другие особенности, отличающие массивы от объектов, – это различные методы, определяемые классом Array.
Дата добавления: 2015-08-01; просмотров: 847;