배열의 요소는 자료형에 제한이 없어서 어떤 값이든 할당할 수 있다. 그래서 배열 안에 배열이 들어갈 수도 있는데, 이를 다차원 배열이라고 부른다.
예를 들어 배열 안에 배열이 들어가 있으면 2차원 배열, 그 안에 또 배열이 들어가면 3차원 배열이라고 한다. 기본 배열과 사용법이 크게 다르지 않고, 단순히 인덱스를 중첩해서 값을 접근하면 된다.
다차원 배열의 각 요소에 접근하려면 단계적으로 인덱스를 지정하면 된다.
const array2D = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// 예를 들어, 2에 접근하려면:
const value = array2D[0][1]; // 첫 번째 배열에서 두 번째 값
console.log(value); // 출력: 2
array2D[0]
으로 첫 번째 배열 [1, 2, 3]
에 접근한다.[1, 2, 3]
배열의 1번 인덱스를 가져오면 2
를 얻는다.이처럼 다차원 배열은 배열을 "단계적으로" 접근하는 방식으로 사용된다.
다차원 배열은 값의 순서나 위치가 중요한 데이터를 표현할 때 유용하다. 구체적인 예시를 보자.
냉장고의 각 층에 들어 있는 내용을 배열로 표현하면 다음과 같다.
const fridge = [
["우유", "계란"], // 1층
["사과", "포도"], // 2층
["김치", "된장"] // 3층
];
// 2층 첫 번째 물건
console.log(fridge[1][0]); // 출력: 사과
아파트의 층별 우편함을 표현할 때도 다차원 배열을 사용할 수 있다.
const mailboxes = [
[101, 102, 103],
[201, 202, 203],
[301, 302, 303]
];
// 2층 3호 우편함 번호
console.log(mailboxes[1][2]); // 출력: 203
체스 게임의 초기 상태를 배열로 저장하면 다음과 같다.
const chessBoard = [
["R", "N", "B", "Q", "K", "B", "N", "R"], // 1행
["P", "P", "P", "P", "P", "P", "P", "P"], // 2행
[null, null, null, null, null, null, null, null], // 빈 칸
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
["P", "P", "P", "P", "P", "P", "P", "P"],
["R", "N", "B", "Q", "K", "B", "N", "R"]
];
// 퀸의 초기 위치
console.log(chessBoard[0][3]); // 출력: Q
다차원 배열은 값의 위치가 중요한 경우 적합하다. 하지만 값의 의미가 중요한 경우라면 객체를 사용하는 것이 더 적합하다.
냉장고 각 층의 의미가 중요하다면, 배열 대신 객체를 사용해 데이터를 구조화할 수 있다.
const fridge = {
firstFloor: ["우유", "계란"],
secondFloor: ["사과", "포도"],
thirdFloor: ["김치", "된장"]
};
// 2층의 첫 번째 물건
console.log(fridge.secondFloor[0]); // 출력: 사과
만약 "1층", "2층"과 같은 구분이 필요 없다면 다차원 배열을 사용하는 것이 더 간결하고 직관적이다. 순서와 위치에 초점을 두고 데이터를 다룰 때는 다차원 배열이 적합하고, 데이터의 의미와 구조를 표현하려면 객체를 사용하는 것이 효과적이다.
array[행][열]
).다차원 배열은 배열 안에 배열이 들어가는 구조로, 특정 값에 접근하려면 단계적인 인덱싱을 사용한다. 값의 위치나 순서가 중요한 경우 적합하며, 체스판, 우편함, 냉장고 등과 같은 데이터를 표현할 때 유용하다. 반면, 데이터의 의미가 더 중요하다면 객체를 사용하는 편이 더 적합하다. 적재적소에 맞게 활용하는 것이 중요하다.