배열
배열
개요
JavaScript의 배열(Array)은 여러 데이터를 순차적으로 저장하고 관리하는 데 사용되는 기본적인 자료구조입니다. 배열은 동적 크기, 다양한 내장 메서드, 유연한 데이터 처리 기능을 제공하며, 프로그래밍에서 반복 작업, 데이터 집합 처리, 상태 관리 등에 핵심적인 역할을 합니다. 이 문서에서는 배열의 기본 개념, 주요 메서드, 활용 패턴, 그리고 최신 기능까지 다룹니다.
배열의 기본
배열 생성
배열은 두 가지 방식으로 생성할 수 있습니다:
- 배열 리터럴: []
를 사용하는 간결한 방법
const fruits = ['Apple', 'Banana', 'Cherry'];
new Array()
를 사용 const numbers = new Array(1, 2, 3); // [1, 2, 3]
const emptyArray = new Array(5); // 길이 5의 빈 배열
요소 접근 및 수정
배열의 요소는 0-based 인덱스로 접근합니다:
console.log(fruits[0]); // "Apple"
fruits[1] = 'Blueberry'; // 두 번째 요소 수정
배열 길이
[length](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/length)
속성으로 배열의 크기를 확인하거나 조정할 수 있습니다:
console.log(fruits.length); // 3
fruits.length = 2; // 배열 크기 조정 (["Apple", "Blueberry"])
배열 메서드
변경 메서드 (Mutator Methods)
배열 자체를 수정하는 메서드입니다:
메서드 | 설명 | 예시 |
---|---|---|
push() |
끝에 요소 추가 | arr.push('New') |
[pop](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/pop)() |
마지막 요소 제거 | arr.pop() |
[unshift](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/unshift)() |
앞에 요소 추가 | arr.unshift('First') |
shift() |
첫 번째 요소 제거 | arr.shift() |
[splice](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/splice)() |
요소 추가/삭제 | arr.splice(2, 1, 'X') |
예시:
const arr = [1, 2, 3];
arr.splice(1, 1, 'a'); // [1, "a", 3]
접근 메서드 (Accessor Methods)
배열을 수정하지 않고 정보를 반환하는 메서드:
메서드 | 설명 | 예시 |
---|---|---|
[slice](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/slice)() |
부분 배열 반환 | arr.slice(1, 3) |
[indexOf](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/indexOf)() |
요소 인덱스 찾기 | arr.indexOf('a') |
[includes](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/includes)() |
요소 존재 여부 확인 | arr.includes('a') |
예시:
const arr = [10, 20, 30];
console.log(arr.slice(0, 2)); // [10, 20]
console.log(arr.includes(25)); // false
순회 메서드 (Iteration Methods)
함수형 프로그래밍 스타일의 메서드:
메서드 | 설명 | 예시 |
---|---|---|
[forEach](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/forEach)() |
각 요소에 대해 함수 실행 | arr.forEach(console.log) |
[map](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/map)() |
변환된 새 배열 생성 | arr.map(x => x * 2) |
[filter](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/filter)() |
조건에 맞는 요소로 구성된 배열 반환 | arr.filter(x => x > 10) |
[reduce](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/reduce)() |
누적 계산 수행 | arr.reduce((a, b) => a + b, 0) |
예시:
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(n => n * 2); // [2, 4, 6, 8]
배열 순회
전통적 반복문
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
forEach()
메서드
arr.forEach((item, index) => {
console.log(`${index}: ${item}`);
});
[for...of](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/for...of)
루프
for (const item of arr) {
console.log(item);
}
다차원 배열
배열 내 배열을 포함하는 구조입니다:
const matrix = [
[1, 2],
[3, 4]
];
console.log(matrix[0][1]); // 2
조작 예시
matrix.forEach(row => row.push(5)); // 각 행에 5 추가
// 결과: [[1, 2, 5], [3, 4, 5]]
Typed Arrays
Typed Arrays는 바이너리 데이터를 효율적으로 처리하기 위한 배열입니다. [ArrayBuffer](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/ArrayBuffer)
와 함께 사용되며, [Int8Array](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/Int8Array)
, [Float32Array](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/Float32Array)
등 다양한 타입이 있습니다:
const buffer = new ArrayBuffer(8);
const view = new Int16Array(buffer);
view[0] = 0x1234;
console.log(view[0].toString(16)); // "1234"
최고의 관행 (Best Practices)
-
배열 구멍(Avoid Holes) 피하기
비연속적인 인덱스는 성능 저하를 초래합니다:const bad = [1, , 3]; // ❌ const good = [1, undefined, 3]; // ✅
-
함수형 메서드 선호
map
,filter
등은 가독성과 불변성 유지에 유리합니다:const squares = numbers.map(n => n ** 2);
-
const
사용 권장
배열 자체를 재할당하지 않는 경우const
로 선언하세요:const arr = [1, 2, 3]; arr.push(4); // 가능 (내용 수정) arr = []; // ❌ 에러
관련 문서 및 참고 자료
이 문서는 JavaScript 배열의 핵심 개념과 활용법을 다루며, 초보자부터 중급 개발자까지 효율적으로 배열을 사용할 수 있도록 구성되었습니다.
이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.