TIR: 완벽가이드 1. 코어자바스크립트(2) 배열1- 220624

Lumpen·2022년 6월 23일
0

TIR

목록 보기
11/40

배열

배열은 정렬된 값의 집합(?) - 인덱스가 순서대로 있다는 뜻인듯 합니다
자바스크립트 배열은 타입이 정해져있지 않다
덕분에 더 정교한 자료구조를 만들 수 있다
자바스크립트 배열은 32비트 인덱스를 사용한다
최대 약 43억개의 원소를 가질 수 있다
동적 크기를 가지기 때문에 크기가 변경되어도 다시 할당 가능

타입스크립트는 T[]와 Array<T> 두 가지 배열 문법을 지원한다

밀집도가 높지 않아 인덱스가 연속적이지 않아도 되고 원소들 사이에 빈자리가 있어도 된다
빈자리가 없는 배열의 경우 length 프로퍼티의 값은 배열의 크기와 같지만
희소배열의 경우 실제 크기보다 크다 (자바스크립트에서는 undefined)

자바스크립트의 배열은 객체의 특별한 형태, 인덱스는 프로퍼티 이름인데 정수
객체 프로퍼티로 접근하는 것 보다 정수 인덱스로 접근하는 것이 훨씬 빠르도록 최적화 되어 있다 - 인덱스 말고도 접근 가능한..?

배열 리터럴에서 빠진 부분이 존재하면 undefined로 초기화 된다

const count = [1, ,3]; // 인덱스 1번의 원소 값은 undefined

배열의 원소 마지막에는 쉼표를 표함할 수 있다

const count2 = [1,2,] // length가 2인 배열이 된다

new Array()

생성자로 호출하는 방법에는 3가지가 있다
1. 인자 없이 호출 - 빈 배열을 생성, 배열 리터럴과 동일함
2. 배열의 길이를 의미하는 숫자 값을 인자로 호출

const arr = new Array(10)

숫자 만큼의 배열 공간을 할당하지만 어떠한 값도 저장되지 않음
따라서 인덱스 또한 존재하지 않는다
3. 두 개 이상의 숫자 혹은 숫자가 아닌 값 하나 이상을 사용

const arr2 = new Array(1, 2)
const arr3 = new Array('a')

배열 리터럴을 사용하는 편이 훨씬 간단하다

배열의 원소 읽고 쓰기

자바스크립트의 배열 인덱스는 숫자를 문자열 형태로 변경해 프로퍼티 이름으로 사용한다

배열 인덱스로 음수나 정수 아닌 수를 사용할 수 있지만
이 경우에는 숫자가 문자열로 변환되고 변환된 문자열이 배열의 프로퍼티 이름이 된다

a[-1.23] = true // 배열의 속성 이름이 '-1.23'
a["1000"] = 0; // 1001번째 원소 값으로 0 할당 
a[1.000] // a[1] 과 동일함

배열의 특징은 'out of bounds' 에러가 발생하지 않는다
객체에 값이 존재하지 않는 프로퍼티 이름을 질의해도 undefined만 발생한다
배열도 같다
모든 배열은 객체이기 때문

희소배열

희소배열은 배열의 원소 위치가 연속적이지 않은 배열
희소배열의 경우 lentgh가 원소 개수보다 항상 크다

const a = new Array(5); // 원소가 없는 배열이지만 length는 5
const b = [?] // length의 값이 0인 빈 배열 생성..????이딴짓 왜함
const c[1000] = 0; // 원소 하나를 할당했지만 length는 1001

희소 배열은 느리고 메모리도 많이 차지한다 중간중간에 값이 비어있기 때문

배열 리터럴 사용 시 값을 명시하지 않는 방법으로 희소 배열을 만들 수 없다
값이 undefined가 되기 때문

배열의 길이

모든 배열에는 length 프로퍼티가 있다
이는 객체와 배열을 구분하는 중요한 특징으로
배열의 마지막 인덱스 + 1 값과 같다

양의 값을 가지고, 기존 length보다 작은 정수를 length에 삽입하면
length이후의 원소가 잘려나간다
length보다 큰 값을 설정하면 기존 값보다 크게 설정 가능, 아무 원소도 추가되지 않는다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글