Array.length

Array.length

lengthArray的实例属性。返回或设置一个数组中的元素个数。该值是一个无符号 32-bit 整数,并且总是大于数组最高项的下标。

var items = ['shoes', 'shirts', 'socks', 'sweaters']; items.length; // returns 4

描述

length属性的值是一个 0 到 232的-1次方 的整数。

var namelistA = new Array(4294967296 //2 to the 32nd power = 4294967296 var namelistC = new Array(-100) //negative sign console.log(namelistA.length //RangeError: Invalid array length console.log(namelistC.length //RangeError: Invalid array length var namelistB = []; namelistB.length = Math.pow(2,32)-1; //set array length less than 2 to the 32nd power console.log(namelistB.length //4294967295

你可以设置length 属性的值来截断任何数组。当通过改变length属性值来扩展数组时,实际元素的数目将会增加。例如:将一个拥有 2 个元素的数组的 length 属性值设为 3 时,那么这个数组将会包含3个元素,并且,第三个元素的值将会是undefined。另见length与数值性质之间的关系。

Array.length属性的属性特性

|:----|

| Writable | yes |

| Enumerable | no |

| Configurable | no |

  • Writable :如果设置为false,该属性值将不能被修改。

  • Configurable :如果设置为false,删除或更改任何属性都将会失败。

  • Enumerable :如果设置为 true ,属性可以通过迭代器for或for..in进行迭代。

示例

遍历数组

下面的例子中,通过数组下标遍历数组元素,并把每个元素的值修改为原值的2倍。

var numbers = [1, 2, 3, 4, 5]; var length = numbers.length; for (var i = 0; i < length; i++) { numbers[i] *= 2; } // numbers is now [2, 4, 6, 8, 10]

截断数组

下面的例子中,如果数组长度大于 3,则把该数组的长度截断为 3 。

var numbers = [1, 2, 3, 4, 5]; if (numbers.length > 3) {   numbers.length = 3; } console.log(numbers // [1, 2, 3] console.log(numbers.length // 3

规范

SpecificationStatusComment
ECMAScript 1st Edition (ECMA-262)StandardInitial definition.
ECMAScript 5.1 (ECMA-262)The definition of 'Array.length' in that specification.Standard
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Array.length' in that specification.Standard
ECMAScript Latest Draft (ECMA-262)The definition of 'Array.length' in that specification.Living Standard

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)