[ 모던 자바스크립트 Deep Dive ] 27장 : 배열

박새롬·2024년 4월 5일
0
post-thumbnail

27.1 배열이란?

  • 배열은 여러 개의 값을 순차적으로 나열한 자료구조다.
  • 배열의 요소는 배욜에서 자신의 위치를 나타내는 0 이상의 정수인 인덱스를 갖는다.
  • 배열은 요소의 개수, 즉 배열의 길이를 나타내는 length 프로퍼티를 갖는다.
    • 자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다.
    • 배열은 객체지만 일반 객체와는 구별되는 독특한 특징이 있다.

27.2 자바스크립트 배열은 배열이 아니다

  • 자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조를 말한다.
  • 배열의 요소는 하나의 데이터 타입으로 통일되어 있으며 서로 연속적으로 인접해 있다.
    • 이러한 배열을 밀집 배열이라한다.
  • 배열에 요소를 삽입하거나 삭제하는 경우 배열의 요소를 연속적으로 유지하기 위해 요소를 이동시켜야하는 단점도 있다.
    • 배열의 요소가 연속적으로 이어져 있지 않는 배열을 희소 배열이라한다
  • 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다.
    • 이처럼 자바스크립트 배열은 인덱스를 나타내는 문자열을 프로퍼티 키로 가지며, length 프로퍼티를 갖는 특수한 객체다.
    • 자바스크립트에서 사용할 수 있는 모든 값은 객체의 프로퍼티 값이 될 수 있으므로 어떤 타입의 값이라도 배열의 요소가 될 수 있다.

27.3 length 프로퍼티와 희소 배열

  • length 프로퍼티는 요소의 개수, 즉 배열의 길이를 나타내는 0 이상의 정수를 값으로 갖는다.
  • legnth 프로퍼티의 값은 빈 배열일 경우 0이며, 빈 배열이 아닐 경우 가장 큰 인덱스에 1을 더한 것과 같다.
    • legnth 프로퍼티의 값은 배열에 요소를 추가하거나 삭제하면 자동 갱신된다.
    • length 프로퍼티 값보다 작은 숫자 값을 할당하면 배열의 길이가 줄어든다.
    • length 프로퍼티 값보다 큰 숫자를 할당한다고 해서 실제로 배열의 길이가 늘어나지는 않는다.

27.4 배열 생성

27.4.1 배열 리터럴

  • 가장 일반적이고 간편한 배열 생성 방식은 배열 리터럴을 사용하는 것이다.

27.4.2 Array 생성자 함수

  • Array 생성자 함수를 통해 배열을 생성할 수 있다.

27.4.3 Array.of

  • ES6에서 도입된 Array.of 메서드는 전달된 인수를 요소로 갖는 배열을 생성한다.

27.4.4 Array.from

  • ES6 에서 도입된 Array.from 메서드는 유사 배열 객체 또는 이터러블 객체를 인수로 전달받아 배열로 변환하여 반환한다.

27.5 배열 요소의 참조

  • 배열의 요소를 참조할 때에는 대괄호([])표기법을 사용한다.
    • 대괄호 안에는 인덱스가 와야한다.
    • 존재하지 않는 요소에 접근하면 undefined가 반환된다.

27.6 배열 요소의 추가와 갱신

  • 객체에 프로퍼티를 동적으로 추가할 수 있는 것처럼 배열에도 요소를 동적으로 추가할 수 있다.
    • 이때 length 프로퍼티 값은 자동 갱신된다.

27.7 배열 요소의 삭제

  • 배열은 사실 객체이기 때문에 배열의 특정 요소를 삭제하기 위해 delete 연산자를 사용할 수 있다.
profile
열심히 하고싶은 사람

0개의 댓글