2次元配列、多次元配列の宣言・初期化・代入・参照 - JavaScript

JavaScriptの2次元配列、多次元配列の宣言・初期化・代入・参照のコードを紹介します。

概要

こちらの記事では、JavaScriptでの配列を利用するコードを紹介しました。 この記事では、複数の次元を持つ多次元配列を利用するコードを紹介します。

書式

宣言 / 初期化

JavaScriptで多次元の配列を作成するには、配列をネストして宣言、初期化をします。
2次元配列の場合
配列変数名 = new Array(配列数);

配列変数名[0] = new Array(配列数);
配列変数名[1] = new Array(配列数);
...
配列変数名[n] = new Array(配列数);
n次元配列の場合
配列変数名 = new Array(配列数);

配列変数名[0] = new Array(配列数);
配列変数名[1] = new Array(配列数);
...
配列変数名[n] = new Array(配列数);

配列変数名[0][0] = new Array(配列数);
配列変数名[0][1] = new Array(配列数);
...
配列変数名[0][m] = new Array(配列数);

...

配列変数名[n][m]...[] = new Array(配列数);


プログラム例1: 2次元配列の例

2次元配列を作成して、値をページに表示するプログラム例を紹介します。

コード

以下のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style>
    table {
      border: 1px solid #808080;
      border-collapse: collapse;
    }
    table tr td {
      border: 1px solid #808080;
      width:2rem;
    }
  </style>
  <script language="javascript" type="text/javascript">
    var data;
    function initData() {
      data = new Array(3);
      data[0] = new Array(3);
      data[1] = new Array(3);
      data[2] = new Array(3);

      data[0][0] = 1;
      data[0][1] = 0;
      data[0][2] = 0;
      data[1][0] = 0;
      data[1][1] = 1;
      data[1][2] = 0;
      data[2][0] = 0;
      data[2][1] = 0;
      data[2][2] = 1;
    }

    function butonClick() {
      var elem = document.getElementById("output");

      var TableStr = "<table><tbody>";
      for (i = 0; i < data.length; i++) {
        TableStr += "<tr>";
        for (j = 0; j < data[i].length; j++) {
          TableStr += "<td>" +String(data[i][j])+"</td>";
        }
        TableStr += "</tr>";
      }
      TableStr += "</tbody></table>";

      elem.innerHTML = TableStr;
    }
  </script>


</head>
<body onload="initData();">
  <h2>2次元配列のデモ</h2>

  <button onclick="butonClick();">Button</button>
  <hr/>
  <div id="output">

  </div>
</body>
</html>

解説

以下のinitData()関数は3x3の2次元配列を作成して値を設定する関数です。
はじめに、data = new Array(3); で3行の配列を作成し、 それぞれの要素 data[0] data[1] data[2] に対して、new Array(3) で長さ3の配列を作成することで、 3x3の2次元配列を作成しています。
配列の作成後にそれぞれの要素に値を代入しています。
    function initData() {
      data = new Array(3);
      data[0] = new Array(3);
      data[1] = new Array(3);
      data[2] = new Array(3);

      data[0][0] = 1;
      data[0][1] = 0;
      data[0][2] = 0;
      data[1][0] = 0;
      data[1][1] = 1;
      data[1][2] = 0;
      data[2][0] = 0;
      data[2][1] = 0;
      data[2][2] = 1;
    }

ボタンクリックにより実行される関数が以下です。
forループで配列の要素にアクセスして値をTableタグで整形して、ページに出力します。
    function butonClick() {
      var elem = document.getElementById("output");

      var TableStr = "<table><tbody>";
      for (i = 0; i < data.length; i++) {
        TableStr += "<tr>";
        for (j = 0; j < data[i].length; j++) {
          TableStr += "<td>" +String(data[i][j])+"</td>";
        }
        TableStr += "</tr>";
      }
      TableStr += "</tbody></table>";

      elem.innerHTML = TableStr;
    }

実行結果

上記のHTMLファイルをWebブラウザで開きます。下図のページが表示されます。


[button]をクリックします。下図の画面が表示されます。2次元配列の値が表に整形されて出力できました。

プログラム例2:ループで初期化する例

コード

下記のHTMLファイルを作成します。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script language="javascript" type="text/javascript">
        function proc() {
            var data = new Array(6);
            for (i = 0; i < data.length; i++) {
                data[i] = new Array(4);
            }

            for (i = 0; i < data.length; i++) {
                for (j = 0; j < data[i].length; j++) {
                    data[i][j] = i * j;
                }
            }

            for (i = 0; i < data.length; i++) {
              document.write(data[i][0] + ", " + data[i][1] + ", " + data[i][2] + ", " + data[i][3]+ "<br/>");
            }
        }
    </script>
</head>
<body>
    <script language="javascript" type="text/javascript">
        proc();
    </script>
</body>
</html>

解説

以下のコードで配列を作成しそれぞれの配列要素に対し配列を作成します。このコードにより2次元配列が作成できます。
  var data = new Array(6);
  for (i = 0; i < data.length; i++) {
    data[i] = new Array(4);
  }

forループを利用して2次元配列に値を設定します。
for (i = 0; i < data.length; i++) {
  for (j = 0; j < data[i].length; j++) {
    data[i][j] = i * j;
  }
}

配列の内容を画面に表示します。
for (i = 0; i < data.length; i++) {
  document.write(data[i][0] + ", " + data[i][1] + ", " + data[i][2] + "<br/>");
}

実行結果

上記のHTMLファイルをWebブラウザで開きます。下図の結果が表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2023-02-16
iPentec all rights reserverd.