ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [까먹기 전에] 중첩 배열 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
Designed by Tistory.