javascript

요약 정리는 못 참지 않을까요? (10) 배열

2023. 1. 16. 10:07
목차
  1. 🙄배열이란?
  2. 🙄배열은 객체지만 일반 객체와 구별된다.
  3. 🙄자바스크립트의 배열은 배열이 아니다?
  4. 🙄배열 고차 함수
  5. 🙄Array.Prototype.sort

🙄배열이란?

배열은 여러개의 값을 순차적으로 나열한 자료구조입니다.
배열이 가지고 있는 값을 요소(element)라고 부르며 자바스크립트의 모든 값은 배열의 요소가 될 수 있습니다.
배열은 자신의 위치를 나타내는 정수 index를 가지며 보통 index는 0부터 시작합니다.

🙄배열은 객체지만 일반 객체와 구별된다.

구분 객체 배열
구조 프로퍼티 키와 프로퍼티 값 인덱스와 요소
값의 참조 프로퍼티 키 인덱스
값의 순서 X O
length property X O

 


🙄자바스크립트의 배열은 배열이 아니다?

자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조이며
배열의 요소는 하나의 데이터 타입으로 통일되어 있고 서로 연속적으로 인접해있습니다.
이러한 배열을 밀집 배열이라고 부릅니다.

따라서 이런 배열은 인덱스를 통해 단 한번의 연산으로 임의의 요소에 접근할 수 있으며
이러한 임의 접근으로 시간복잡도O(1)로 인덱스에 접근할 수 있습니다.

검색대상요소의 메모리주소 = 배열의 시작 메모리 주소 + (인덱스 * 요소의 바이트수)

하지만 정렬되지 않은 배열에서 특정한 요소를 검색하는 경우
배열의 모든 요소를 처음부터 특정 요소를 발견할 때 까지 차례대로 선형검색 해야합니다.
시간복잡도 O(n)

그리고 배열의 요소를 삽입,삭제 하는 경우 배열 요소를 연속적으로 유지하기 위해
요소를 이동시켜야 한다는 단점도 존재합니다.
메모리주소 1000 1008 1016
배열 1 2 3
인덱스 0 1 2

자료구조에서 말하는 밀집 배열

하지만 자바스크립트의 배열은 배열 요소를 위한 메모리 공간이 동일한 크기가 아니어도 괜찮으며
연속적으로 이어져 있지 않을 수도 있습니다.
이렇게 배열의 요소가 연속적으로 이어져있지 않은 배열을 희소 배열이라고 부릅니다.
또한 희소배열의 경우 배열의 요소 중 일부가 비어있을 수 있습니다.
즉 값 없이 비어있는 요소를 위해 메모리 공간을 확보하지 않습니다.

자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체라고 할 수 있습니다.
자바스크립트 배열은 인덱스를 나타내는 문자열을 프로퍼티키로 가지면서
length 프로퍼티를 가지는 특수한 객체이며 배열의 요소는 사실 프로퍼티 값입니다.
자바스크립트의 모든 값은 객체의 프로퍼티 값이 될 수 있으니 어떤 타입 값도 배열 요소가 될 수 있습니다.
일반적인배열 자바스크립트배열
인덱스로 요소에 빠르게 접근 가능 해시테이블로 구현된 객체여서 인덱스로 요소에 접근 시 느림
요소를 삽입,삭제 하는게 효율적이지 않음 요소 삽입,삭제 시 일반적인 배열보다 빠름

 


🙄배열 고차 함수

고차함수란 함수를 인수로 전달받거나 함수를 반환하는 함수를 말합니다.
고차함수는 외부상태의 변경이나 가변 데이터를 피하고
불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있습니다.

🙄Array.Prototype.sort

sort 메서드에 정렬 순서를 정의하는 비교 함수를 인수로 전달해야합니다.
비교 함수는 양수, 음수 또는 0을 반환해야합니다.
비교 함수의 반환값이 0보다 작으면 첫번째 인수를 우선하여 정렬하고
0이면 정렬하지 않으며
0보다 크면 두번째 인수를 우선하여 정렬합니다.

반응형
저작자표시 비영리 (새창열림)

'javascript' 카테고리의 다른 글

요약 정리는 못 참지 않을까요? (12) 이터러블  (0) 2023.01.17
요약 정리는 못 참지 않을까요? (11) RegExp  (1) 2023.01.17
요약 정리는 못 참지 않을까요? (9) ES6 함수의 추가 기능  (0) 2023.01.16
요약 정리는 못 참지 않을까요?(8) 자바스크립트의 클래스  (0) 2023.01.16
요약 정리는 못 참지 않을까요?(7) 클로저  (0) 2023.01.13
  1. 🙄배열이란?
  2. 🙄배열은 객체지만 일반 객체와 구별된다.
  3. 🙄자바스크립트의 배열은 배열이 아니다?
  4. 🙄배열 고차 함수
  5. 🙄Array.Prototype.sort
'javascript' 카테고리의 다른 글
  • 요약 정리는 못 참지 않을까요? (12) 이터러블
  • 요약 정리는 못 참지 않을까요? (11) RegExp
  • 요약 정리는 못 참지 않을까요? (9) ES6 함수의 추가 기능
  • 요약 정리는 못 참지 않을까요?(8) 자바스크립트의 클래스
냠냠맨
냠냠맨
프론트엔드 개발 전반을 다루는 기술 블로그입니다.
냠냠맨
React와 TypeScript를 좋아하는 개발자
냠냠맨
전체
오늘
어제
  • all category (433)
    • CMC (0)
    • best (11)
    • 년간회고 (1)
    • cheetsheet (15)
    • 프로젝트 회고 (3)
    • 서평 (3)
    • SEO Study (1)
    • 프로젝트 진행기 (10)
    • testcode (9)
    • yarnberry (7)
    • css (21)
    • typescript (15)
    • redux (7)
    • react (43)
    • Next.js (9)
    • Nestjs (3)
    • javascript (44)
    • programmers (67)
    • leetcode (41)
    • frontend (41)
    • backjoon (1)
    • Next.js Beta Docs 번역 (12)
    • TIL (15)
      • html (3)
    • Network (12)
      • 간단 정리 시리즈 (2)
      • 질답 준비 (0)
    • 자료구조와 알고리즘 (2)
    • CS (4)
      • OS (1)
    • 취업준비 (2)
    • zoom websocket (2)
    • talk (6)
    • 면접대비 (1)
    • 코드스테이츠 프론트 (5)
    • 간헐적 회고 (17)

블로그 메뉴

  • leetcode
  • programmers
  • javascript
  • html
  • css

공지사항

인기 글

태그

  • 개발
  • 말풍선
  • CSS
  • 테오의스프린트
  • JavaScript
  • border말풍선
  • 코드스테이츠 #프론트엔드
  • 프론트엔드
  • 개발자
  • LeetCode
  • teosprint
  • 주니어개발자
  • frontend
  • 테오의스프린트17기

최근 댓글

최근 글

hELLO · Designed By 정상우.
냠냠맨
요약 정리는 못 참지 않을까요? (10) 배열
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.