Help us understand the problem. What is going on with this article?

GASでプログラミング入門 Vol.8

GASでプログラミング入門 Vol.8

社内サークルにてエンジニアから非エンジニアの方向けにプログラミングを教えるという活動を行っています。

今回はその教材第8弾です。
前回の記事はこちら

前回の演習問題の解答例

(1). 下記の配列を宣言して、実行結果の表示になるプログラムを作成して下さい。

let nums = [1, 2, 3, 5, 8, 13];

実行結果

numsの0番目のデータは「1」です。
numsの1番目のデータは「2」です。
numsの2番目のデータは「3」です。
numsの3番目のデータは「5」です。
numsの4番目のデータは「8」です。
numsの5番目のデータは「13」です。

解答例コード

function myFunction(){
    let nums = [1, 2, 3, 5, 8, 13];
    for(let i = 0; i < nums.length; i++){
        console.log("numsの" + i + "番目のデータは「" + nums[i] + "」です。");
    }
}

(2). 下記の配列を宣言して、実行結果の表示になるプログラムを作成して下さい。
配列内のデータは可変しても平気なように考慮して、各種果物の個数を数えるようにして下さい。
ただし、配列内に出現する果物の種類は「りんご」、「みかん」、「ぶどう」の3種類のみで、それ以外の種類の果物に関しては個数を数える必要はありません。

let fruits = ["りんご", "みかん", "ぶどう", "みかん", "りんご", "りんご"];

実行結果

配列内に含まれる「りんご」の個数は3個です。
配列内に含まれる「みかん」の個数は2個です。
配列内に含まれる「ぶどう」の個数は1個です。

解答例コード

function myFunction(){
    let fruits = ["りんご", "みかん", "ぶどう", "みかん", "りんご", "りんご"];
    let apple = 0; // りんごの個数カウント用変数
    let orange = 0; // みかんの個数カウント用変数
    let grape = 0; // ぶどうの個数カウント用変数
    for(let current of fruits){
        if( current == "りんご" ){
            apple++;
        }else if( current == "みかん" ){
            orange++;
        }else if( current == "ぶどう" ){
            grape++;
        }
    }
    console.log("配列内に含まれる「りんご」の個数は" + apple + "個です。");
    console.log("配列内に含まれる「みかん」の個数は" + orange + "個です。");
    console.log("配列内に含まれる「ぶどう」の個数は" + grape + "個です。");
}

なお解答例はあくまで例なので、必ずしも上記のようになっていないといけないわけではありません。

連想配列

今回は前回学んだ配列の一種で、実務でもよく使用される連想配列というものを学んでいきます。
まず連想配列と普通の配列の違いですが、初期化の方法や配列内のデータへのアクセス方法が異なります。

let person = {name: "鈴木一郎", age: 30, birthday: "1990/04/02", hobby: "ドライブ"};
console.log("氏名:" + person["name"]);
console.log("年齢:" + person["age"]);
console.log("誕生日:" + person["birthday"]);
console.log("趣味:" + person["hobby"]);

まず初期化の文法ですが、

let 連想配列変数名 = {キー名: データ,キー名: データ,...};

のように記述します。

続いて、連想配列のデータへのアクセス文法ですが、

連想配列変数名[キー名]

のように記述します。

普通の配列との大きな違いは、先頭から数えて何番目という記述の仕方ではなく、データを格納しているキー名で指定するところです。
配列のように数値ではないので、ぱっと見で連想配列内の何のデータへアクセスしているのかがわかりやすくなります。

また、下記のような書き方も可能です。

let person = {name: "鈴木一郎", age: 30, birthday: "1990/04/02", hobby: "ドライブ"};
console.log("氏名:" + person.name);
console.log("年齢:" + person.age);
console.log("誕生日:" + person.birthday);
console.log("趣味:" + person.hobby);
連想配列変数名.キー名

どちらの書き方でも良いので、お好みの記述方法を採用してもらえれば良いと思います。

連想配列の配列

下記のように連想配列のデータを配列で管理することも可能です。

let persons = [
    {name: "鈴木一郎", age: 30, birthday: "1990/04/02", hobby: "ドライブ"},
    {name: "山田太郎", age: 20, birthday: "2000/08/30", hobby: "登山"},
    {name: "佐藤花子", age: 24, birthday: "1996/05/10", hobby: "ショッピング"}
];
for(let person of persons){
    console.log("氏名:" + person.name);
    console.log("年齢:" + person.age);
    console.log("誕生日:" + person.birthday);
    console.log("趣味:" + person.hobby);
}

連想配列内のデータに配列

下記のように連想配列内のデータに配列を作ることも可能です。

let person = {name: "鈴木一郎", age: 30, birthday: "1990/04/02", hobbys: ["ドライブ","映画鑑賞","読書"]};
console.log("氏名:" + person.name);
console.log("年齢:" + person.age);
console.log("誕生日:" + person.birthday);
for(let hobby of person.hobbys){
    console.log("趣味:" + hobby);
}

演習問題

(1). 下記のような実行結果になるように連想配列を作成して下さい。
連想配列のキー名などは任意の名称をつけて下さい。

実行結果

ユーザーID:U0001
ユーザー名:鈴木一郎
メールアドレス:suzuki@example.com
電話番号:xxx-xxxx-xxxx

(2). 下記のような実行結果になるようにプログラムを作成して下さい。
連想配列は下記のコードを使用して下さい。

let persons = [
    {name: "鈴木一郎", age: 30, birthday: "1990/04/02", hobby: "ドライブ"},
    {name: "山田太郎", age: 20, birthday: "2000/08/30", hobby: "登山"},
    {name: "佐藤花子", age: 24, birthday: "1996/05/10", hobby: "ショッピング"},
    {name: "田中次郎", age: 27, birthday: "1993/07/20", hobby: "スノーボード"},
    {name: "杉本沙耶香", age: 32, birthday: "1988/02/23", hobby: "アロマセラピー"},
    {name: "市井由美子", age: 26, birthday: "1994/03/03", hobby: "漫画"}
];

実行結果

年齢が27才以上の人は下記の人たちです。
鈴木一郎さん、趣味はドライブ
田中次郎さん、趣味はスノーボード
杉本沙耶香さん、趣味はアロマセラピー
------------------------------
年齢が26才以下の人は下記の人たちです。
山田太郎さん、誕生日は2000/08/30
佐藤花子さん、誕生日は1996/05/10
市井由美子さん、誕生日は1994/03/03

まとめ

いかがでしたでしょうか。
連想配列を用いることで様々なデータを柔軟に表現及び、管理することが可能です。
実務でもよく使われるデータ構造なので、しっかりと概念を理解しておきましょう。
それではまた次の記事でお会いしましょう。

lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away