Книга: JavaScript. Подробное руководство, 6-е издание
7.4. Длина массива
7.4. Длина массива
Любой массив имеет свойство length
, и это свойство отличает массивы от обычных объектов JavaScript. Для плотных (т.е. неразреженных) массивов свойство length
определяет количество элементов в массиве. Его значение на единицу больше самого большого индекса в массиве:
[].length // => 0: массив не имеет элементов
['а','Ь','с'].length // => 3: наибольший индекс равен 2, длина равна 3
Для разреженных массивов значение свойства length больше числа элементов, и все, что можно сказать в этом случае, - это то, что значение свойства length
гарантированно будет превышать индекс любого элемента в массиве. Или, говоря иначе, массивы (разреженные или нет) никогда не будут содержать элемент, индекс которого будет больше или равен значению свойства length массива
. Для поддержки этого свойства массивы проявляют две особенности поведения. Первая была описана выше: если присвоить значение элементу массива, индекс і
которого больше или равен текущему значению свойства length
, в свойство length
записывается значение i+1
.
Вторая особенность в поведении, обеспечивающем работу свойства length
, заключается в том, что при присваивании свойству length
неотрицательного целого числа n, меньшего, чем его текущее значение, все элементы массива с индексами, большими или равными значению n, удаляются из массива:
а = [1,2,3,4,5]; // Создать массив с пятью элементами.
a.length =3; // теперь массив а содержит элементы [1,2,3].
a.length = 0; // Удалит все элементы, а - пустой массив [].
a.length = 5; // Длина равна 5, но элементы отсутствуют, подобно Аггау(5)
В свойство length
массива можно также записать значение больше, чем его текущее значение. В этом случае в массив не добавляются новые элементы, а просто создается разреженная область в конце массива.
В ECMAScript 5 свойство length
массива можно сделать доступным только для чтения, с помощью Object.defineProperty()
(раздел 6.7):
а = [1,2,3]; // Создать массив а с тремя элементами.
Object.defineProperty(a, ‘length", // Сделать свойство length
{writable: false}); // доступным только для чтения,
a.length =0; //а не изменится.
Аналогично, если сделать элемент массива ненастраиваемым, его нельзя будет удалить. Если элемент нельзя будет удалить, то и свойство length
не может быть установлено в значение, меньшее или равное индексу ненастраиваемого элемента. (Смотрите раздел 6.7, а также описание методов Object.seal()
и Object.freeze()
в разделе 6.8.3.)
- 7.1. Создание массивов
- 7.2. Чтение и запись элементов массива
- 7.3. Разреженные массивы
- 7.4. Длина массива
- 7.5. Добавление и удаление элементов массива
- 7.6. Обход элементов массива
- 7.7. Многомерные массивы
- 7.8. Методы класса Array
- 7.9. Методы класса Array, определяемые стандартом ECMAScript 5
- 7.10. Тип Array
- 7.11. Объекты, подобные массивам
- 7.12. Строки как массивы
- delete - Удаление объекта, элемента массива или переменной
- Доступ к данным массива
- Новые функции API для работы с Blob и массивами
- 9.2 Реализация массива ftAID на платформе Windows NT
- 7.6. Обход элементов массива
- 14.4.2. Хранение переменных окружения в виде массива или хэша
- Работа с массивами в хранимых процедурах
- 8.1.15. Удаление заданных элементов из массива
- Работа с несколькими массивами
- Функции для работы с массивами
- Работа с массивами данных
- Инициализация двумерного массива