
자료구조에서 말하는 배열은 값의 순서를 보장할 뿐만 아니라, 각 요소가 동일한 데이터 크기(타입)을 가지며,
메모리상에서 연속적으로 이어져있다.
그러나, 자바스크립트에서의 배열은 일반적인 배열과는 다르게 각 요소의 메모리 공간이 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있다.
자바스크립트 배열은 해시 테이블로 구현된 객체이며, 인덱스로 요소에 접근하는 경우 일반적인 배열보다 성능적인 면에서 느릴 수 있으나, 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠른 성능을 기대할 수 있다.
자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체(Object)이다.
const arr = [1, 2, 3];
// 주의
const arr = [1, ,3];
일반적이고 가장 간편한 배열 생성 방식이다.
주의할 점은 배열 리터럴에 요소를 생략하면 무시되는 것이 아니라, 생략된 인덱스의 요소는 undefined 값을 가진다.
// 인자의 개수가 하나인 경우
const arr = new Array(3);
=> <3 empty items>
// 인자의 개수가 두개 이상이거나 숫자가 아닌 경우
const arr = new Array(1, 2, 3);
=> [1, 2, 3]
인자의 개수가 하나인 경우, 크기가 인자만큼의 배열이 생성된다.
인자의 개수가 두개 이상인 경우, 인자를 요소로 갖는 배열을 생성합니다.
const arr = Array.of(3)
=> [3]
const arr = Array.of(1, 2, 3)
=> [1, 2, 3]
Array.of는 Array 생성자 함수와는 다르게 전달된 인자와 무관하게 인자를 요소로 갖는 배열을 생성합니다.
배열 생성의 대표적인 방법은 배열 리터럴, Array 생성자 함수, Array.of 가 있다.
indexOf 메서드는 원본 배열에서 인자로 전달된 요소를 검색하여 인덱스를 반환한다.
인자로 전달된 요소가 배열안에 여러 개 있다면 첫 번째로 검색된 요소의 인덱스를 반환한다.
원본 배열에 인수로 전달한 요소가 존재하지 않으면 -1을 반환한다.
include 메서드는 원본 배열에서 인자로 전달된 요소를 검색하여, 요소를 포함하고 있으면 true, 아니라면 false를 반환한다.
배열 안에 특정 값이 있는 지 조사할 때 유용하게 쓸 수 있다.
push 메서드는 배열의 맨 끝에 요소를 추가후 배열의 길이를 반환한다.
pop 메서드는 배열의 맨 끝의 요소를 제거하고 요소를 반환한다.
splice 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
splice(index, 2) -> index부터 2개의 아이템을 삭제한다는 뜻
splice(index, 0, item) -> index에 arr요소를 추가한다.
concat 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환합니다.
arr1.concat(arr2)
flat 메서드는 모든 하위 배열 요소를 지정한 깊이까지 배열을 풀어 펼쳐진 배열로 반환합니다.
arr.flat(2) -> 3중리스트까지 펼쳐진다.
reverse 메서드는 배열의 순서를 반전합니다. 첫 번째 요소는 마지막 요소가 되며 마지막 요소는 첫 번째 요소가 됩니다.
reverse 메서드는 원본 배열을 변형하고 그 참조값을 반환합니다.
join 메서드는 입력받은 구분자로 배열의 모든 요소를 연결해 하나의 문자열을 반환한다.