21. 배열
📚

21. 배열

Description
배열에 관한 내용
Published
2023-06-09
일반적인 배열은 밀집 배열(배열의 요소는 하나의 데이터 타입으로 통일되어 있으며 서로 연속적으로 인접해 있는 배열)을 말한다.
자바스크립트에서 값으로 인정하는 모든 것은 배열의 요소가 될 수 있다.
자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다.
인덱스로 배열 요소에 접근하는 경우에는 일반적인 배열보다 느리다.
특정 요소를 검색하거나 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠르다.
배열은 요소를 최대 (4,294,967,295)개 가질 수 있다.
자바스크립트는 문법적으로 희소 배열(배열의 요소가 연속적으로 이어져 있지 않고 length와 배열 요소의 개수가 일치하지 않는 배열)을 허용한다.
배열에는 같은 타입의 요소를 연속적으로 위치시키는 것이 최선이다.
정수 이외의 값을 인덱스처럼 사용하면 요소가 생성되는 것이 아니라 프로퍼티가 생성된다.
 

배열 생성

배열 리터럴
0개 이상의 요소를 쉼표로 구분하여 대괄호로 묶는다.
 
Array 생성자 함수
전달된 인수가 1개이고 숫자인 경우 length 프로퍼티 값이 인수인 희소 배열을 생성한다.
전달된 인수가 없는 경우 빈 배열을 생성한다. 즉, 배열 리터럴 []과 같다.
전달된 인수가 2개 이상이거나 숫자가 아닌 경우 인수를 요소로 갖는 배열을 생성한다.
 
Array.of 메서드
전달된 인수를 요소로 갖는 배열을 생성한다.
 
Array.from 메서드
유사 배열 객체 또는 이터러블 객체를 인수로 전달받아 배열로 변환하여 반환한다.
두 번째 인수로 전달한 콜백 함수를 통해 값을 만들면서 요소를 채울 수 있다.
 
유사 배열 객체(array-like object)
마치 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고 length 프로퍼티를 갖는 객체를 말한다.
유사 배열 객체는 length 프로퍼티를 갖기 때문에 for 문으로 순회할 수 있다.
인덱스를 나타내는 숫자 형식의 문자열을 프로퍼티 키로 가지므로 마치 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있다.
유사 배열 객체는 이터러블이 아닌 일반 객체이므로 Symbol.iterator 메서드가 없기 때문에 for...of 문으로 순회할 수 없다.
 

배열 메서드

배열에는 원본 배열(배열 메서드를 호출한 배열, 즉 배열 메서드의 구현체 내부에서 this가 가리키는 객체)을 직접 변경하는 메서드(mutator method)와 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드(accessor method)가 있다.
 
Array.isArray 메서드
전달된 인수가 배열이면 true, 배열이 아니면 false를 반환한다.
 
Array.prototype.indexOf 메서드
원본 배열에서 인수로 전달된 요소를 검색하여 인덱스를 반환한다.
 
Array.prototype.push 메서드
인수로 전달받은 모든 값을 원본 배열의 마지막 요소로 추가하고 변경된 length 프로퍼티 값을 반환한다.
 
Array.prototype.pop 메서드
원본 배열에서 마지막 요소를 제거하고 제거한 요소를 반환한다.
 
Array.prototype.unshift 메서드
인수로 전달받은 모든 값을 원본 배열의 선두에 요소로 추가하고 변경된 length 프로퍼티 값을 반환한다.
 
Array.prototype.shift 메서드
원본 배열에서 첫 번째 요소를 제거하고 제거한 요소를 반환한다.
 
Array.prototype.concat 메서드
인수로 전달된 값들(배열 또는 원시값)을 원본 배열의 마지막 요소로 추가한 새로운 배열을 반환한다.
인수로 전달한 값이 배열인 경우 배열을 해체하여 새로운 배열의 요소로 추가한다.
 
Array.prototype.splice 메서드
원본 배열의 중간에 요소를 추가하거나 중간에 있는 요소를 제거하고 제거한 요소를 반환한다.
 
Array.prototype.slice 메서드
첫 번째 인수로 전달받은 인덱스부터 두 번째 인수로 전달받은 인덱스 이전까지 요소들을 복사하여 배열로 반환한다.
 
Array.prototype.join 메서드
원본 배열의 모든 요소를 문자열로 변환한 후, 인수로 전달받은 문자열로 연결한 문자열을 반환한다.
 
Array.prototype.reverse 메서드
원본 배열의 순서를 반대로 뒤집고 변경된 배열을 반환한다.
 
Array.prototype.fill 메서드
인수로 전달받은 값을 배열의 처음부터 끝까지 요소로 채운다.
 
Array.prototype.includes 메서드
배열 내에 특정 요소가 포함되어 있는지 확인하여 true 또는 false를 반환한다.
 
Array.prototype.flat 메서드
인수로 전달한 깊이만큼 재귀적으로 배열을 평탄화한다.
 

배열 고차 함수

Array.prototype.sort 메서드
유니코드 코드 포인트의 순서로 배열의 요소를 정렬하고 정렬된 배열을 반환한다.
 
Array.prototype.forEach 메서드
내부에서 반복문을 통해 자신을 호출한 배열을 순회하면서 수행해야 할 처리를 콜백 함수로 전달받아 반복 호출한다.
 
Array.prototype.map 메서드
자신을 호출한 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백 함수를 반복 호출하고 콜백 함수의 반환값들로 구성된 새로운 배열을 반환한다.
 
Array.prototype.filter 메서드
콜백 함수의 true인 요소로만 구성된 새로운 배열을 반환한다.
 
Array.prototype.reduce 메서드
콜백 함수의 반환값을 다음 순회 시에 콜백 함수의 첫 번째 인수로 전달하면서 콜백 함수를 호출하여 하나의 결과값을 만들어 반환한다.
 
Array.prototype.some 메서드
콜백 함수의 반환값이 단 한 번이라도 참이면 true, 모두 거짓이면 false를 반환한다.
 
Array.prototype.every 메서드
콜백 함수의 반환값이 모두 참이면 true, 단 한 번이라도 거짓이면 false를 반환한다.
 
Array.prototype.find 메서드
콜백 함수의 반환값이 true인 첫 번째 요소를 반환하고 true인 요소가 없으면 undefined를 반환한다.
 
Array.prototype.findIndex 메서드
콜백 함수의 반환값이 true인 첫 번째 요소의 인덱스를 반환하고 true인 요소가 없으면 -1을 반환한다.
 
Array.prototype.flatMap 메서드
map 메서드를 통해 생성된 새로운 배열을 1단계만 평탄화한다.
 

 
⬇️ 출처