3.5 배열

vencott·2021년 6월 2일

배열도 객체다

3.5.1 배열 리터럴

객체가 프로퍼티 명으로 접근 했다면 배열의 요소에 접근할 땐 인덱스로 접근한다

var colorArr = ["orange", "yellow", "green", "red"];

console.log(colorArr[0]);
console.log(colorArr[1]);
console.log(colorArr[2]);
console.log(colorArr[3]);

3.5.2 배열의 요소 생성

동적으로 추가 가능

var emptyArr = [];

emptyArr[1] = '1';
emptyArr[3] = '3';

console.log(emptyArr); // --> undefined, 1, undefined, 3

3.5.3 배열의 length 프로퍼티

배열은 length라는 프로퍼티를 가지고 있다

length는 원소 개수를 의미하지만, 실제 원소 개수와 항상 같은것은 아니다

그저 배열의 크기를 반환할 뿐, 실제 원소 개수를 알려주지는 않는다

배열의 가장 큰 인덱스에 1을 더한 값이다

명시적으로 변경이 가능하다

var arr = [];

arr[0] = 11;
arr[1] = 12;
arr[2] = 13;
arr[100] = 1;

print(arr.length); // 실제로 존재하는 원소는 4개지만, length는 101

3.5.3.1 배열 표준 메소드와 length 프로퍼티

push, pop, shift 등이 있다

push의 경우, 배열의 마지막 인덱스 + 1, 즉, length index에 새로운 원소를 추가한다

그러므로 length 프로퍼티는 중요하다

var arr = ['one', 'two'];

arr.push('three');
print(arr);
print(arr.length);

arr.length = 4;
print(arr);
arr.push('four');
print(arr);
print(arr.length);

3.5.5 배열의 프로퍼티 동적 생성

배열도 객체이므로, 프로퍼티를 가질 수 있다

단, 배열의 원소가 아닌 객체로서의 프로퍼티는 length에 영향을 주지 않는다

var arr = ['one', 'two'];

print(arr.length);

arr.gender = 'male'; // 프로퍼티 추가
print(arr);
print(arr.length); // length는 변하지 않음

arr[2] = 'three'; // 원소 추가
print(arr);
print(arr.length); // length 변함

3.5.6 배열의 프로퍼티 열거

일반적으로 객체의 프로퍼티를 열거할때 for in 문을 쓰지만, 배열의 원소들을 취급할때는 그냥 for문을 쓰는 것을 권장한다

var arr = ['one', 'two'];

arr.arrayName = "arrayName";

print(arr.length);

for (var prop in arr) // for in 문 : 프로퍼티를 포함한 전체 출력
    print(arr[prop]);

for (var i = 0; i < arr.length; i++) // for문 : 프로퍼티를 제외한 배열 원소만 출력
    print(arr[i]);

3.5.7 배열 요소 삭제

  • delete: 원소의 값을 삭제하지만(undefined로) 그 원소 자체를 삭제하지는 않는다(length에 영향 x)
  • splice: 원소 자체를 삭제하고 length에도 영향을 미친다(length에 영향 o)

3.5.8 Array() 생성자 함수

profile
Backend Developer

0개의 댓글