배열은 여러개의 값을 순차적으로 나열한 자료구조이다.
const arr = ['apple', 'banana', 'orange'];
이걸 배열 리터럴을 통해 생성한 배열이라 부르고 각 값을 요소라고 부른다.
또한 요소는 자신의 위치를 나타내는 0이상의 정수인 인덱스를 갖는다.
배열이라는 타입은 존재하지 않고 객체타입이다.
배열은 배열 리터럴, Array 생성자 함수, Array.of, Array.from 메서드로 생성할 수 있다.
또한 Array.prototype이 배열의 프로토 타입 객체이다.
일반 객체와 배열의 가장 큰 차이는 값의 순서와 length 프로파티 이다.
일반적인 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조 이다.
하지만 자바스크립트의 배열은 배열의 동작을 흉내낸 특수한 객체이다.
자바스크립트의 배열은 인덱스를 나타내는 문자열을 프로퍼티 키로 가지며, length 프로퍼티를 갖는 특수한 객체이다.
일반적인 배열과의 장단점을 비교해보면
자바스크립트에서 배열의 length는 배열의 길이를 나타낸다.
하지만 실제 길이와 length의 값은 다를 수 있다.
const arr = [1,2,3,4,5];
arr.length = 3;
console.log(arr); // [1, 2, 3]
위와 같은 예제를 보면 기존 length 5를 3으로 변경하면 실제 길이가 줄어든다.
하지만 실제보다 큰값을 할당하게 된다면 배열의 길이가 늘어나지 않는다.
따라서 배열에는 같은 타입의 요소를 연속적으로 위치시키는 것이 최선이다.
const arr = [1, 2, 3];
const arr1 = [1,,3];
arr1은 희소 배열이다.
const arr = new Array(10);
Array.of(1); // [1]
Array.of(1, 2, 3) // [1, 2, 3]
Array.of('string') // ['string']
Array.from({length : 2, 0:'a', 1:'b'}) // ['a','b']
Array.from('Hello') // ['H', 'e', 'l', 'l', 'o']
이 이후로는 다 메서드에 관한 내용이라 필요할때 마다 찾아보는게 더 효율이 좋을 것같다...