【プログラミング学習メモ】配列の基本

パソコンの画面

前回はif文、for文、while文など、条件分岐に関わる部分でした。今回は配列についてです。

変数を複数集めた箱「配列」

最初の記事で書いた変数(データを入れる箱)を複数集めた箱のようなものを配列と呼ぶ。配列は2種類の書き方がある。

配列の書き方その①値を1つ1つ定義する

var city = new Array();

city[0] = "tokyo";
city[1] = "osaka";
city[2] = "nagoya";

新しくデータを追加する場合は、配列の番号(キー)と値を追加することで作ることができる。なお、配列の番号(キー)は、0から始まる。

書き方その②一度にまとめて定義する

var city = ["tokyo" , "osaka" , "nagoya"];

配列は配列の番号(キー)とその中身がセットで記述され、上記のようにまとめて定義を行うこともできる。配列の中身を取り出すときは、配列の番号(キー)が必要となる。

 

CodeCampの課題プログラム

いくつか課題があった中で、一番手間のかかったやつを載せてみます。

複数の数値が定義されている配列data1とdata2から「data1とdata2を合わせた平均値」と「平均値以上の数値」を表示するプログラムです。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>課題</title>
    <script>
        var data1 = [59, 39, 100, 2, 15, 40, 84, 97];
        var data2 = [63, 18, 64, 97, 50, 98];

        var sum1 = 0; //data1の合計値
        var sum2 = 0; //data2の合計値
        var ave = 0; //data1とdata2の平均値
        var j = 0; //dataの配列数のカウント
        
        //data1の合計値を取得
        for(var i = 0; i < data1.length; i++){
            sum1 += data1[i];
            j = j + 1
        }
        
        //data2の合計値を取得
        for(var i = 0; i < data2.length; i++){
            sum2 += data2[i];
            j = j + 1
        }
        
        //data1とdata2の平均値を計算して表示
        ave = ( sum1 + sum2 ) / j;
        document.write("<p>data1とdata2を合わせた平均値:" + ave + "</p>");
        document.write("<p>平均値以上の数値は以下</p>");

        //data1の数字を平均点と比較して表示
        for(var i = 0; i < data1.length; i++){
            if( data1[i] >= ave){
                document.write("<p>data1:" + data1[i] + "</p>");
            } else {
            }
        }
        
        //data2の数字を平均点と比較して表示
        for(var i = 0; i < data2.length; i++){
            if( data2[i] >= ave){
                document.write("<p>data2:" + data2[i] + "</p>");
            } else {
            }
        }
        
    </script>
</head>
<body>
</body>
</html>

課題はちょっと考えたら解けたけど、実際どういった場面で使うのか、具体的なイメージがついていないのが正直なところ。

今の段階でわかっていることは、配列は、条件分岐や繰り返し処理を組み合わせることで柔軟なデータの処理ができそうということでしょうか。

うーん、現段階では、正直何も作れる気がしませんねw

しかし、徐々にややこしくなってきました。次回は関数についてです。