배열
2026년 01월 20일
배열(Array)이란 동일한 타입의 데이터를 하나의 변수에 담아 효율적으로 관리할 수 있게 해주는 기본 자료형입니다.
배열이 없다면, 학생 100명의 성적을 저장할 때 score1, score2, ... score100까지 총 100개의 변수를 일일이 선언해야 할 것입니다.
// 1) 배열이 없다면
const score1 = 72;
const score2 = 94;
// ...
const score100 = 80;
// 2) 배열을 사용할 때
const score = [72, 96, ..., 80];하지만 배열을 사용하면 하나의 변수와 인덱스를 이용해서 수백 개의 데이터를 아주 간단하게 관리할 수 있습니다.
// 1) 리터럴
const arr = [0, 1, 2];
// 2) 배열 생성자 + 스프레드 오퍼레이터
const arr = [...new Array(3)].map((_, idx) => idx);
// 3) 배열 생성자 + fill
const arr = new Array(3).fill(0).map((_, idx) => idx + 1);💡 주의 ) 배열 생성자에 스프레드 오퍼레이터를 씌우지 않고 바로 map을 돌리면 값이 채워지지 않아요!new Array(3).map((_, idx) => idx + 1); // [empty, empty, empty]배열 안에 배열을 넣어 행렬 구조를 만들 수 있습니다.
// 1) 리터럴
const arr = [[0, 0, 0], [1, 1, 1]];
// 2) 배열 생성자
const arr = [...new Array(3)].map((_, idx) => new Array(2).fill(idx))배열을 효율적으로 쓰려면 연산별로 시간이 얼마나 걸리는지 아는 것이 중요합니다. (N은 배열의 크기)
| 연산 | 시간 복잡도 | 설명 |
| 데이터 조회 | O(1) | 인덱스 번호만 알면 바로 접근할 수 있어요. |
| 맨 뒤에 삽입 | O(1) | arr[N]에 임의 접근한 후 값을 넣어주면 끝! 기존에 있던 데이터들의 위치는 변하지 않아요. |
| 맨 앞 또는 중간에 삽입 | O(N) | 삽입할 위치보다 뒤에 있는 데이터들을 한 칸씩 뒤로 밀고 나서 값을 삽입해요. 맨 앞에 삽입하는 경우(최악의 경우), 기존의 모든 데이터를 한 칸씩 뒤로 밀어주는 N번의 연산이 필요합니다. |
value를 추가value를 추가startIndex에서 0개의 원소를 삭제한 후, value1, value2, ...를 넣음startIndex에서 deleteCount개의 원소를 삭제한 후, value1, value2, ...를 넣음const arr = [1, 2, 3, 4, 5];
arr.map(e => e * 2) // [2, 4, 6, 8, 10]
arr.filter(e => e > 2); // [3, 4, 5]
arr.sort((a, b) => a - b); // [1, 2, 3, 4, 5]
arr.every(e => e > 1); // false
arr.some(e => e > 1); // true
arr.find(e => e > 3); // 4
arr.findIndex(e => e > 3); // 3
arr.reduce((acc, cur, idx, arr) => acc + cur, 0) // 15