The length
property of an object which is an instance of type Array
sets or returns the number of elements in that array. The value is an unsigned, 32-bit integer that is always numerically greater than the highest index in the array.
The value of the length
property is an integer with a positive sign and a value less than 2 to the 32nd power (232).
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
You can set the length
property to truncate an array at any time. When you extend an array by changing its length
property, the number of actual elements increases; for example, if you set length
to 3 when it is currently 2, the array now contains 3 elements, which causes the third element to be undefined
.
var arr = [1, 2, 3]; printEntries(arr); arr.length = 5; // set array length to 5 while currently 3. printEntries(arr); function printEntries(arr) { var goNext = true; var entries = arr.entries(); while (goNext) { var result = entries.next(); if (result.done !== true) { console.log(result.value[1]); goNext = true; } else goNext = false; } console.log('=== printed ==='); } // 1 // 2 // 3 // === printed === // 1 // 2 // 3 // undefined // undefined // === printed ===
But, the length
property does not necessarily indicate the number of defined values in the array. See also Relationship between length
and numerical properties.
Property attributes of Array.length
| |
---|---|
Writable | yes |
Enumerable | no |
Configurable | no |
Writable
: If this attribute set to false
, the value of the property cannot be changed.Configurable
: If this attribute set to false
, any attempts to delete the property or change its attributes (Writable
, Configurable
, or Enumerable
) will fail.Enumerable
: If this attribute set to true
, the property will be iterated over during for or for..in loops.In the following example, the array numbers
is iterated through by looking at the length
property. The value in each element is then doubled.
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]
The following example shortens the array numbers
to a length of 3 if the current length is greater than 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
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial 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. | Draft |
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | Yes | Yes | Yes | Yes | Yes | Yes |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | Opera Android | iOS Safari | Samsung Internet |
---|---|---|---|---|---|---|---|
Basic support | Yes | Yes | Yes | Yes | Yes | Yes | ? |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length