Array: length
Властивість даних length
(довжина) примірника Array
, що представляє число елементів у такому масиві. Значення є беззнаковим 32-бітовим цілим числом, котре завжди більше за найбільший індекс елемента масиву.
Спробуйте його в дії
Значення
Невід'ємне число, менше від 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); // Від'ємні числа не дозволені
// RangeError: Invalid array length
Об'єкт масиву відстежує властивість length
і автоматично синхронізує її значення зі своїм вмістом. Що означає:
- Присвоєння
length
значення, меншого за поточну довжину, обрізає масив: елементи поза новою довжиною – видаляються. - Присвоєння за будь-яким індексом масиву (невід'ємним цілим числом, меншим ніж 232) поза поточною довжиною розширює масив: властивість
length
збільшується, аби відповідати новому найбільшому індексові. - Присвоєння
length
недійсного значення (наприклад, від'ємного числа чи взагалі не числа) викидає винятокRangeError
.
Коли length
присвоюється значення, більше за поточну довжину, то масив розширюється шляхом додавання порожніх комірок, а не реальних значень undefined
. Порожні комірки можуть по-особливому взаємодіяти з методами масивів; дивіться методи масиву й порожні комірки.
const arr = [1, 2];
console.log(arr);
// [ 1, 2 ]
arr.length = 5; // задати довжину масива 5, хоча насправді елементів 2.
console.log(arr);
// [ 1, 2, <3 порожні елементи> ]
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 [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; решта елементів видалена
Створення порожнього масиву фіксованої довжини
Присвоєння length
значення, більшого за поточну довжину, утворює розріджений масив.
const numbers = [];
numbers.length = 3;
console.log(numbers); // [порожньо x 3]
Масив з недоступною для запису length
Властивість 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]'
Специфікації
Специфікація |
---|
ECMAScript Language Specification (ECMAScript) # sec-properties-of-array-instances-length |
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
length
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 37 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |