数组:长度
基线 广泛可用
此功能非常成熟,可以在许多设备和浏览器版本上使用。自 2015 年 7 月.
报告反馈
尝试一下
价值
Array
实例的 length
数据属性表示该数组中的元素数量。该值是一个无符号的 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); // Negative numbers are not allowed
// RangeError: Invalid array length
js
- 数组对象会观察
length
属性,并自动将length
值与数组的内容同步。这意味着 - 将
length
设置为小于当前长度的值会截断数组 - 超过新length
的元素将被删除。 - 将任何数组索引(小于 232 的非负整数)设置在当前
length
之后会扩展数组 -length
属性将增加以反映新的最高索引。
将 length
设置为无效值(例如负数或非整数)会抛出 RangeError
异常。
length
属性的值是一个非负整数,其值小于 232。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
设置为大于当前长度的值时,数组会通过添加 空槽 来扩展,而不是实际的 undefined
值。空槽与数组方法有一些特殊的交互;请参阅 数组方法和空槽。
示例
另请参阅 length
和数字属性之间的关系。
遍历数组
length
属性的值是一个非负整数,其值小于 232。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]
在以下示例中,通过查看 length
属性来遍历数组 numbers
。然后将每个元素中的值加倍。
缩短数组
length
属性的值是一个非负整数,其值小于 232。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
以下示例将数组 numbers
的长度缩短为 3(如果当前长度大于 3)。
创建固定长度的空数组
length
属性的值是一个非负整数,其值小于 232。const numbers = [];
numbers.length = 3;
console.log(numbers); // [empty x 3]
将 length
设置为大于当前长度的值会创建一个 稀疏数组。
具有不可写长度的数组
length
属性的值是一个非负整数,其值小于 232。"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]'
规范
当元素添加到当前长度之后时,length 属性会由数组自动更新。如果 length 属性被设置为不可写,则数组将无法更新它。这会导致 严格模式 中出现错误。 |
---|
规范 # ECMAScript 语言规范 |
浏览器兼容性
sec-properties-of-array-instances-length
另请参阅
- 启用 JavaScript 以查看数据。
数组
索引集合 指南
- TypedArray.prototype.length
String
:length