Array: length
Базовая версия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Свойство данных length экземпляра Array представляет количество слотов в этом массиве. Значение является беззнаковым 32-битным целым числом, которое всегда численно больше наивысшего индекса в массиве. Оно может быть больше количества элементов, если массив разреженный.
Попробуйте
const clothing = ["shoes", "shirts", "socks", "sweaters"]; console.log(clothing.length); // Expected output: 4
Значение
Неотрицательное целое число меньше 232.
Атрибуты свойства Array: length
| |
|---|---|
| Записываемое | да |
| Перечисляемое | нет |
| Настраиваемое | нет |
Описание
Значение свойства length является неотрицательным целым числом со значением меньше 232.
const listA = [1, 2, 3]; const listB = new Array(6); console.log(listA.length); // 3 console.log(listB.length); // 6 listB.length = 2 ** 32; // 4294967296 // RangeError: Invalid array length const listC = new Array(-100); // Negative numbers are not allowed // RangeError: Invalid array length
Объект массива отслеживает свойство length и автоматически синхронизирует значение length с содержимым массива. Это означает:
- Установка
lengthна значение меньше текущей длины усекает массив — элементы за пределами новойlengthудаляются. - Установка любого индекса массива (неотрицательное целое число меньше 232) за пределами текущей
lengthрасширяет массив — свойствоlengthувеличивается, чтобы отразить новый наивысший индекс. - Установка
lengthна недопустимое значение (например, отрицательное число или нецелое число) вызывает исключениеRangeError.
Когда length устанавливается на значение больше текущей длины, массив расширяется путем добавления пустых слотов, а не фактических значений undefined. Пустые слоты имеют некоторые особые взаимодействия с методами массива; см. методы массива и пустые слоты.
const arr = [1, 2]; console.log(arr); // [ 1, 2 ] arr.length = 5; // set array length to 5 while currently 2. console.log(arr); // [ 1, 2, <3 empty items> ] arr.forEach((element) => console.log(element)); // 1 // 2
См. также Связь между length и числовыми свойствами.
Примеры
Перебор массива
В следующем примере массив numbers перебирается путем просмотра свойства length. Значение в каждом элементе затем удваивается.
const numbers = [1, 2, 3, 4, 5];
const length = numbers.length;
for (let i = 0; i < length; i++) {
numbers[i] *= 2;
}
// numbers is now [2, 4, 6, 8, 10]
Сокращение массива
Следующий пример сокращает массив numbers до длины 3, если текущая длина больше 3.
const numbers = [1, 2, 3, 4, 5];
if (numbers.length > 3) {
numbers.length = 3;
}
console.log(numbers); // [1, 2, 3]
console.log(numbers.length); // 3
console.log(numbers[3]); // undefined; the extra elements are deleted
Создание пустого массива фиксированной длины
Установка length на значение больше текущей длины создает разреженный массив.
const numbers = []; numbers.length = 3; console.log(numbers); // [empty x 3]
Массив с незаписываемой длиной
Свойство length автоматически обновляется массивом при добавлении элементов за пределы текущей длины. Если свойство length сделано незаписываемым, массив не сможет его обновить. Это вызывает ошибку в строгом режиме.
"use strict";
const numbers = [1, 2, 3, 4, 5];
Object.defineProperty(numbers, "length", { writable: false });
numbers[5] = 6; // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
numbers.push(5); // // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
length |
1 |
12 |
1 |
4 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
1 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
- Руководство по индексированным коллекциям
ArrayTypedArray.prototype.lengthString:length- RangeError: invalid array length
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length