-
[까먹기 전에] 중첩 배열 or 다차원 배열에 대한 간단한 예시기타 2024. 6. 26. 03:20
자바스크립트를 다시 공부하다가 콘솔 출력 파트 중 list에서 이해가지 않는 부분이 생겼다.
let a_list = [1, 4, 2, [3, 1]] a_list.length // 4 a_list[3] // [3, 1] a_list[3][1] // 1
여기서 왜 마지막 줄의 값이 1인지?
Chat GPT에게 물어보았다그렇다. 겹겹이 된 list 표현이었다.
*참고로 인덱스는 0부터 시작이다.
a_list의 [3]은 우선 [3,1] 이란 배열 녀석들이 통째로 해당된다. 다른 1, 4, 2처럼 딱 숫자만 나오지 않는다.
그러니 a_list[3] 뒤에 [1]을 하나 더 붙여 한 번 더 들어갈 수 있다.
a_list[3][0] 은 3이 호출될 것이고, a_list[3][1]은 1이 호출된다.
그래서 궁금하여 한 번 더 중첩시켜 보았다.
그러면 만약
let b_list = [1, 4, 2, [3, 1, [7, 9, 8]]] 일 때 b_list[3][2][1] 을 호출하면 9가 나오는 게 맞니?
9가 나오는 게 맞다.이제 이 원리는 까먹지 않겠다.
이러한 배열 개념을 "중첩 배열" 혹은 "다차원 배열" 이라고 한다.
배열 안에 또 다른 배열이 포함된, 여러 차원의 배열로 구성된 종류이다.
앞서 나온 a_list[3][1]은 2차원 배열, 내가 만든 b_list[3][2][1]은 3차원 배열이라고 할 수 있다.
이러한 다차원 배열의 쓰임은 대략 다음과 같다.
2차원 배열
수학그래프, 테이블구조, JSON에서 중첩된 객체들을 표현할 때 **, 지도에서 면적+높이를 표현할 때***, 좌표 데이터 등
**// 사용자 데이터 let users = [ { name: "Alice", posts: [[ "Post1", "Content1" ], [ "Post2", "Content2" ]] }, { name: "Bob", posts: [[ "Post3", "Content3" ], [ "Post4", "Content4" ]] } ];
***// 게임 맵 (0 = 도로, 1 = 장애물) let gameMap = [ [0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 1] ];
3차원 배열
여러 층을 가지는 게임 맵 등// 3D 게임 맵 (z축 = 층, y축과 x축 = 각 층의 좌표) let gameMap3D = [ // 1층 맵 [ [0, 1, 0], [0, 0, 1], [1, 0, 0] ], // 2층 맵 [ [1, 0, 1], [1, 1, 0], [0, 1, 1] ], // 3층 맵 [ [0, 0, 0], [1, 1, 1], [0, 1, 0] ] ];
'기타' 카테고리의 다른 글
공공데이터 open api의 xml 파일을 csv 파일로 변환하기 (0) 2023.11.11