Array: length
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Thuộc tính dữ liệu length của một đối tượng Array biểu thị số lượng phần tử trong mảng đó. Giá trị là một số nguyên không dấu 32-bit luôn lớn hơn chỉ mục cao nhất trong mảng về mặt số học.
Try it
const clothing = ["shoes", "shirts", "socks", "sweaters"];
console.log(clothing.length);
// Expected output: 4
Giá trị
Một số nguyên không âm nhỏ hơn 232.
Property attributes of Array: length | |
|---|---|
| Writable | yes |
| Enumerable | no |
| Configurable | no |
Mô tả
Giá trị của thuộc tính length là một số nguyên không âm có giá trị nhỏ hơn 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
Đối tượng mảng theo dõi thuộc tính length, và tự động đồng bộ giá trị length với nội dung của mảng. Điều này có nghĩa là:
- Đặt
lengththành một giá trị nhỏ hơn độ dài hiện tại sẽ cắt bớt mảng — các phần tử vượt quálengthmới sẽ bị xóa. - Đặt bất kỳ chỉ mục mảng nào (số nguyên không âm nhỏ hơn 232) vượt quá
lengthhiện tại sẽ mở rộng mảng — thuộc tínhlengthđược tăng lên để phản ánh chỉ mục cao nhất mới. - Đặt
lengththành giá trị không hợp lệ (ví dụ như số âm hoặc số không phải nguyên) sẽ ném ra ngoại lệRangeError.
Khi length được đặt thành giá trị lớn hơn độ dài hiện tại, mảng được mở rộng bằng cách thêm các ô trống, không phải các giá trị undefined thực sự. Các ô trống có một số tương tác đặc biệt với các phương thức mảng; xem array methods and empty slots.
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
Xem thêm Relationship between length and numerical properties.
Ví dụ
>Lặp qua một mảng
Trong ví dụ sau, mảng numbers được lặp qua bằng cách nhìn vào thuộc tính length. Giá trị trong mỗi phần tử sau đó được nhân đôi.
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]
Rút ngắn một mảng
Ví dụ sau rút ngắn mảng numbers xuống độ dài 3 nếu độ dài hiện tại lớn hơn 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
Tạo mảng rỗng có độ dài cố định
Đặt length thành giá trị lớn hơn độ dài hiện tại sẽ tạo ra mảng thưa.
const numbers = [];
numbers.length = 3;
console.log(numbers); // [empty x 3]
Mảng với thuộc tính length không thể ghi
Thuộc tính length được mảng tự động cập nhật khi phần tử được thêm vượt quá độ dài hiện tại. Nếu thuộc tính length được đặt thành không thể ghi, mảng sẽ không thể cập nhật nó. Điều này gây ra lỗi trong chế độ nghiêm ngặt.
"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]'
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-properties-of-array-instances-length> |