[TIL/모던 자바스크립트 Deep Dive] 2023/07/19
배열(array)은 여러 개의 1) 값을, 2) 순차적으로 나열한 자료구조다.배열이 가지고 있는 값을 요소(element)라고 부른다. 자바스크립트의 모든 값(=원시값, 객체, 함수, 배열 등...)은 배열의 요소가 될 수 있다.각 배열의 요소는, 배열에서 자신의 위치
27장. 배열 🟢
27-1. 배열이란? 🟡

배열이 가지고 있는 값을 ```요소(element)```라고 부른다. 자바스크립트의 모든 값(=원시값, 객체, 함수, 배열 등...)은 배열의 요소가 될 수 있다.
각 배열의 요소는, 배열에서 자신의 위치를 나타내는 0 이상의 정수인 ```인덱스(index)```를 갖는다. 인덱스는 배열의 요소에 접근할 때 사용하고, 대부분의 프로그래밍 언어에서 인덱스는 0부터 시작한다.
배열의 특징인 ```요소(element)```와 ```인덱스(index)```는, 배열의 길이를 나타내는 ```length 프로퍼티```로 이어진다. length 프로퍼티를 갖기에 for 문을 통해 순차적으로 요소에 접근할 수 있다. 추가적으로 자바스크립트에 배열 타입은 없다. 배열은 객체 타입이다.

일반 객체와 배열을 구분하는 가장 명확한 차이는 ```인덱스```와 ```length 프로퍼티```다. 배열은(인덱스와 length 프로퍼티 덕분에...) 반복문을 통해 순차적으로 값에 접근하기 적합한 자료구조라는 점이 핵심이다.
### 27-2. 자바스크립트 배열은 배열이 아니다 🟡
자료구조(data structure)에서 말하는 배열은, ```동일한 크기의 메모리 공간```이 ```빈틈없이 연속적으로``` 나열된 자료구조를 말한다. 메모리 공간의 크기가 동일하다는 것은 배열의 요소가 하나의 데이터 타입으로 통일되어 있어야 한다는 의미이기도 하다. 어쨌든, 이러한 배열을 ```밀집 배열(dense array)```이라 한다.
밀집 배열이 일반적인 의미의 배열인데, 다음과 같이 인덱스를 통해 단 한 번의 연산으로 임의의 요소에 접근할 수 있다.
인덱스가 1인 요소의 메모리 주소는 1008이다. 아무튼, 효율적이라는 뜻이다.
vs
자바스크립트 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있다. 배열의 요소가 연속적으로 이어져 있지 않은 배열을 ``희소 배열(sparse array)``이라 한다.
이처럼 정렬되지 않은 배열에서 특정한 요소를 검색하는 경우 배열의 모든 요소를 처음부터 특정 요소를 발견할 때까지 차례대로 검색해야 한다. 또한 배열에 요소를 삽입하거나 삭제하는 경우 배열의 요소를 연속적으로 유지하기 위해 요소를 이동시켜야 하는 단점도 있다.
=> 정리를 위해서 길게 작성했지만, 결론은?
More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계