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.

Array 인스턴스의 length 속성은 배열의 길이를 반환합니다. 반환값은 부호 없는 32비트 정수형이며, 배열의 최대 인덱스보다 항상 큽니다. length 속성에 값을 설정할 경우 배열의 길이를 변경합니다.

시도해보기

설명

length 속성의 값은 양의 정수이며 2^32 미만의 값을 가집니다.

js
var namelistA = new Array(4294967296); // 2의 32제곱 = 4294967296
var namelistC = new Array(-100); // 음수

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; // 길이를 2의 32제곱 미만으로 설정
console.log(namelistB.length);

// 4294967295

아무 때나 length 속성에 값을 설정해 배열을 절단할 수 있습니다. length 속성으로 배열의 길이를 늘리면 실제 원소의 수가 증가합니다. 예를 들어 길이가 2인 배열의 length를 3으로 설정한다면 마지막에 undefined가 추가돼 총 3개의 요소를 갖게 됩니다.

js
var arr = [1, 2, 3];
printEntries(arr);

arr.length = 5; // set array length to 5 while currently 3.
printEntries(arr);

function printEntries(arr) {
  var length = arr.length;
  for (var i = 0; i < length; i++) {
    console.log(arr[i]);
  }
  console.log("=== printed ===");
}

// 1
// 2
// 3
// === printed ===
// 1
// 2
// 3
// undefined
// undefined
// === printed ===

그러나 length 속성의 값이 꼭 배열에 정의된 원소의 수를 나타내진 않습니다. length와 숫자형 속성의 관계를 참고하세요.

Property attributes of Array.length
Writable 가능
Enumerable 불가능
Configurable 불가능

예제

배열 순회

다음 예제는 numbers 배열을 length 속성의 크기만큼 순회합니다. 각 원소의 값은 두 배가 됩니다.

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

배열 단축

다음 예제는 numbers 배열의 현재 길이가 3보다 클 경우 3으로 줄입니다.

js
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
ECMAScript Language Specification
# sec-properties-of-array-instances-length

브라우저 호환성

BCD tables only load in the browser

같이 보기