pathas 2022. 3. 20. 23:45

정의

연관된 데이터를 연속적인 형태로 저장하는 자료구조


특징

  • 배열에 포함된 원소는 순서대로 번호(index)가 붙음
  • 원하는 원소의 index를 알고 있다면 배열 내의 원소를 찾을 수 있음
  • 배열 내 원소를 삭제하면 해당 index에 빈자리가 생김
  • 고정된 크기를 가지며 일반적으로는 동적으로 크기를 변경할 수 없음
    => JS 등의 스크립트 언어에서는 배열의 크기가 가변적인 경우가 많음
  • 배열에 원소 추가/삭제 시 O(n) 이 소요됨
    => 추가/삭제가 반복되는 로직에는 배열 사용이 권장되지 않음
  • 탐색이 많은 경우에 유리

Javascript 에서 배열 사용 시 유의할 점

  • 배열 내 원소의 추가/삭제 시 사용되는 splice 의 경우 O(n) 의 시간복잡도를 가짐
  • 배열의 크기가 가변적
  • 자바스크립트의 배열은 기본적으로 객체 타입
    => index가 number 가 아닌 경우 key-value 로 처리
  • 배열과 객체가 다른 점은 배열의 경우 내부적으로 length 가 관리됨
    => index가 number 가 아닌 경우 length 에 영향을 미치지 않음

Array.from 메서드로 range 함수 만들기

const range = (length) => Array.from(new Array(length), (_, index) => index + 1);

const toTen = range(10);

console.log(toTen); // (10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Length 직접 조작하기

const toTen = range(10);

toTen.length = 5;
console.log(toTen); // [1, 2, 3, 4, 5]

toTen.lengh = 10;
console.log(toTen); //  [1, 2, 3, 4, 5, lengh: 10]