JavaScript で配列 3

 多次元配列のデータを使って、いわゆる表の形でデータを表示してみます。


1 多次元配列の要素をテーブル形式で表示

 まずは HTML におけるテーブルの書式を再確認します。

書式

 表の「行」にあたる部分は、先頭に <tr>、末尾に </tr> を置いて囲う必要があるのでしたね。
 また、border = “1” の部分は、表の線の太さを指示しています。

 まず全文を示します。

多次元配列の要素をテーブル形式で表示
〔順位〕市・区人口(万人)都道府県

 生データよりも格段に見やすい表ができあがりました。
 しかも、順位が付いています。(あらかじめ人口が多い順番にデータが並んでいます。)
 項目名の部分はそのまま HTML 形式のままですが、データの部分は繰り返し処理を使っています。
 このコードを上から順にみていきましょう。

 その前に HTML の <head> 内のコードを説明しておきます。

 この部分は表のデータを中央ぞろえで表示するという指示です。


2 表の項目の部分

 まずは表の項目名を表示するためのコードです。

多次元配列の要素をテーブル形式で表示
〔順位〕市・区人口(万人)都道府県

 ここは HTML のコードそのままですね。


3 <script> の部分(前半)

 次に、<script> の開始から、配列の部分です。

 ここも問題ないかと思います。


4 <script> の部分(後半)

 次に、繰り返し処理の部分です。

 相当複雑そうに見えます。
 繰り返し処理のなかに、さらに 繰り返し処理 が記述されている構造になっています。
 そこで、この内部の for 文は後から検討することにして、まずは一つ目の for 文以下に記述されている document.write のみについてみていきます。

 見やすくしてみました。

 document.write が3つあります。

 まず、一つ目の document.write と三つ目の document.write に注目します。

 これらは最初に <tr> を出力し、最後に </tr> を出力するというものです。
 それぞれの出力を、変数 i が「0」から ppl.length より小さい間、繰り返し実行することになります。

 表の形式でいうと、「行」を示すためのコードが出力されたことになります。
 なお、わかりやすいように、改行・インデントは手入力で追加しています。

 次に、二つ目の document.write です。

 write メソッドの対象は、① <td>〔 ② i + 1 ③ 〕</td> の部分に分けて考えることができます。
 まず、②の部分は変数 i に1を加算した数字が入りますので、1回目のループでは「1」が入りますね。
 したがって、二つ目の document.write により、1回目のループでは <td>〔1〕</td> というコードが出力されます。

 この <td>・・・</td> は <tr> と </tr> との間にありますので、この位置にコードが出力されます。
 あとは、その繰り返しですね。
 なお、ここでもわかりやすいように、改行・インデントは手入力で追加しています。

 さて、ここまで説明したコードではどのような結果になるでしょうか。

多次元配列の要素をテーブル形式で表示
〔順位〕市・区人口(万人)都道府県

 変数 ppl に入力した要素(配列)の部分以外の部分について表ができていますね。
 そして市・区、人口、都道府県の部分は for 文の内部にある for 文で出力されることが容易に予想できますね。

 それでは、その部分を生成するコードをみていきましょう。

 参照しやすいように、変数 ppl の0番目の配列を表示しています。
 変数 j が「0」でこのループがスタートし、j++ とあることから、「1」ずつ変数 j の値が増えていきます。(増分処理)
 そして、変数 j の値が ppl[i].length よりも小さいときのみループが続いていきます。

 1回目は ppl[0] ですので、その内容は「”特別区”, 979, “東京都”」となります。
 よって、この要素の数(配列の長さ)は「3」です。
 そして、ppl[0] length オブジェクトで得られた値を条件式にしていますので、判定される条件式は j < 3 ということになります。
 つまり、このループは結果的に「0」から「2」まで、合計3回繰り返されることになります。

 次に繰り返される処理についてみていきましょう。

 <td> と </td> の部分は値が入る「場所」のようなものを設定するタグです。
 これは先ほどの〔順位〕と同じですね。
 そして、ppl[i][j] の部分は、変数 i と変数 j という添え字が2つ記述されています。
 これは前回みたとおり、番目の配列のうち、番目の要素を指定するのでしたね。

 ということは、変数 i が「0」変数 j が「0」のときは、要素「特別区」が取り出されることになります。
 そして、さらに変数 j が「1」のときは「979」、「2」のときは「東京都」が取り出され、それぞれ document.write により出力されることになり、合計3回で変数 i が「0」のときのループが終了します。

 したがって、外側のループ1回目の時点で出力されるコードは下記のようになります。

 内側のループ処理が、<tr> の生成、<td>〔1〕</td> の生成の次にあるのでこのようになります。

 外側のループ処理の1回目、つまり変数 i が「0」のみの処理ではどのように出力されるでしょうか。

多次元配列の要素をテーブル形式で表示
〔順位〕市・区人口(万人)都道府県

 表の内容の1行目のみが出力されています。

 そして、ループ処理の2回目、つまり変数 i が「1」のときも同様に処理されます。

多次元配列の要素をテーブル形式で表示
〔順位〕市・区人口(万人)都道府県

 表の内容の2行目までが出力されています。

 この後、変数 i が「2」から「9」まで繰り返され、冒頭にあった表が出力されることになります。


5 次回

 少し複雑でしたね。さて次回は、復習を兼ねて今回の処理を少し簡単に記述する方法を勉強します。

カテゴリー

更新記事

タグ

break (1) class (3) collection (6) continue (1) CSS (2) DOM (2) for (1) function (3) HTML (8) if (2) JavaScript (28) object (5) pop (1) push (1) shift (1) switch (1) unshift (1) VBA (1) while (2) ことば (25) アンガーマネジメント (1) インソース (1) ココナラ (12) コーチング (1) チーズ (2) ネズミ (2) ノート (2) パーソルホールディングス (4) ブランディング (1) ブランド (1) プログリット (1) ポート (1) メモ (2) リスキリング (1) リンクアンドモチベーション (3) 変数 (3) 学習 (1) 小人 (2) 怒り (1) 新聞 (2) 株式 (30) 用語 (16) 睡眠 (3) 給水器 (1) 記憶 (3) Aoba-BBT (12) IGS (12) Kラーニング (1)


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

確かな力が身につくJavaScript「超」入門 第2版 [ 狩野 祐東 ]
価格:2,728円(税込、送料無料) (2024/2/16時点)


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

1冊ですべて身につくJavaScript入門講座 [ Mana ]
価格:2,794円(税込、送料無料) (2024/2/23時点)



Categories: