본문 바로가기
제가 쓴 책/HTML5, CSS3 and JavaScript

6.5 이차원 배열

by edupicker(체르니) 2013. 8. 6.

6.5 이차원 배열


지금까지 알아본 배열은 일차원 배열 즉, 일렬로 늘어놓은 리스트 같은 형태였다면 이차원 배열은 행과 열로 이루어진 메트릭스(Matrix) 형태의 데이터를 표시하는데 사용하는 형태로 HTML5의 테이블(table)이나 Excel 워크시트 형태 데이터를 나타낼 때 사용합니다.
기본적으로 일차원 배열을 생성하는 형태는 크게 new 키워드를 이용하거나 배열을 나타내는 기호인 []을 이용하여 생성을 했었는데 이차원 배열도 역시 2 가지 방법으로 이차원 배열을 만들 수 있습니다.

먼저 new 키워드를 이용한 방법을 살펴봅니다. 먼저 new 키워드를 이용하여 몇 개의 행으로 이차원 배열을 생성할 지 생각한 후 배열(Array)을 생성합니다. 그 다음 생성된 배열의 한 요소에 다시 new 키워드를 이용하여 한 행에 포함될 요소 수만큼으로 배열을 생성합니다.


//new 키워드를 이용한 방법
var twoDArray= new Array(
행의 수);
twoDArray[
행번호] = new Array(열의 수);


예를 들어 다음과 같은 3x4 행렬 형태의 테이블(table)이 있을 경우를 가정합니다.


사원번호

이름

직급

전화번호

S000001

조민기

대리

010-775-7845

M000002

이학동

팀장

010-887-9999


위와 같은 테이블의 데이터들을 이차원 배열의 형태로 나타내고자 한다면 다음과 같이 코드를 작성하여 표현할 수 있습니다.

var twoDArray = new Array(3);
twoDArray[0] = new Array(4);
twoDArray[0][0]= “
사원번호”;
twoDArray[0][1]= “
이름”;
twoDArray[0][2]= “
직급”;
twoDArray[0][3]= “
전화번호”;

twoDArray[2] = new Array(4);
twoDArray[2][0]= “M000002”;
twoDArray[2][1]= “
이학동”;
twoDArray[2][2]= “
팀장”;
twoDArray[2][3]= “010-887-9999”;

다음으로 배열의 기호인 []을 이용하여 이차원 배열을 만드는 방법을 보면 다음과 같습니다.


//[] 기호를 이용한 방법
var twoDSArray= [ [
요소1, 요소2, …], [요소1, 요소2, …], …]


위에서 사용한 3x4 행렬 형태의 테이블(table) [] 기호를 이용하여 나타낼 경우 다음과 같이 간단하게 표현할 수 있습니다.

var twoDSArray = [ ["
사원이름", "이름", "직급", "전화번호"],
                  ["S000001", "
조민기", "대리", "010-775-7845"],
                  ["M000002", "
이학동", "팀장", "010-887-9999"]];

이제 이차원 배열에 대한 예제를 해봅니다. 방금 전 설명한 3x4 행렬 형태의 테이블(table) 형태의 데이터를 이차원 배열에 저장하고 각 요소(아이템)을 출력하는 예제입니다. 메모장을 열어서 다음과 같이 코드를 작성합니다.


<!DOCTYPE HTML>
<html>
<head>
  <title>
이차원 배열 예제</title>
  <script type="text/javascript">  
    var twoDArray = new Array(3);
    twoDArray[0] = new Array(4);
    twoDArray[0][0]= "
사원번호";
    twoDArray[0][1]= "
이름";
    twoDArray[0][2]= "
직급";
    twoDArray[0][3]= "
전화번호";
    twoDArray[1] = new Array(4);
    twoDArray[1][0]= "S000001";
    twoDArray[1][1]= "
조민기";
    twoDArray[1][2]= "
대리";
    twoDArray[1][3]= "010-775-7845";
    twoDArray[2] = new Array(4);
    twoDArray[2][0]= "M000002";
    twoDArray[2][1]= "
이학동";
    twoDArray[2][2]= "
팀장";
    twoDArray[2][3]= "010-887-9999";

    function displayItems(inArray){
      for(var ridx=0;ridx<inArray.length; ridx++){
        for(var cidx=0; cidx< inArray[0].length; cidx++) document.write(inArray[ridx][cidx]+"\t"); 
        document.write("<br />");     
      }
    }
   
    displayItems(twoDArray); 
  </script>

</html>


displayItems 함수(function)의 입력 파라미터로 배열을 입력 받도록 하고 안에서 2 for 문을 이용하여 입력 파라미터로 넘어온 이차원 배열을 반복하면서 해당 요소(아이템)를 출력하도록 하는데 외부 for문에서는 배열의 length 속성을 이용하여 입력받은 배열의 총 행의 수만큼 반복하도록 하고 내부 for문에서 첫 번째 행에 포함된 총 열의 수만큼 반복하도록 처리합니다.
“twoDimensionarray.html”
으로 저장합니다. IE9를 이용하여 연결해보면 다음과 같이 테이블의 형태로 결과를 출력합니다.



다음으로 []을 이용하여 이차원 배열 형태로 코드를 추가한 후 “ displayItems(twoDSArray); “  같이 실행하면 위와 동일한 결과를 출력합니다.

이제 마지막으로 displayItems 함수(function) 부분 코드를 조금 바꿔서 다음과 같이 나타나도록 해볼까요?




기존의 function displayItems(inArray){ … } 부분을 다음과 같이 수정합니다.

    function displayItems(inArray){
      for(var ridx=0;ridx<inArray.length; ridx++){
        if(ridx == 0)
        {
          document.write("<table border>");
          document.write("<tr>");
          for(var cidx=0; cidx<inArray[0].length; cidx++)  
            document.write("<th>"+inArray[ridx][cidx]+"</th>"); 
          document.write("</tr>");
        }
        else
        {
          document.write("<tr>");
          for(var cidx=0; cidx<inArray[0].length; cidx++)
            document.write("<td>"+inArray[ridx][cidx]+"</td>"); 
          document.write("</tr>");
        }   
      }
      document.write("</table>"); 
    }




- 본 저작물은 본인이 2011년 상반기부터 2012년 여름 즈음까지 도서 출판을 목적으로 약 470 페이지(A4, 폰트 10)으로 작성한 원본 중 JavaScript에 대한 부분을 그대로를 공개하는 것으로 본 저작물에 대한 모든 권리는 본인(원철연)에서 있음을 알립니다.
개인적인 학습 목적으로 사용을 허용하며 온오프라인의 베포나 펌상업적인 용도의 사용은 삼가해주시기 바랍니다. 끝으로 학교나 비영리 단체에서의 경우 본 저작물을 비상업적인 용도로 활용하고자 할 경우 연락처를 비밀댓글로 남겨주시면 연락드리겠습니다.