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]'

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також