見出し画像

GAS中級講座 事前課題 その4【課題2-4】

ネタバレ注意

中級講座を受講中の方、宿題は自分でやってねー。


前回のnote


初級講座受講時のnote


【課題2-4】4.オブジェクトより

演習4-05 オブジェクト基本

引数としてオブジェクトを渡すと、その内容すべてを「プロパティ: 値」という形式でログ出力する関数を作成してみましょう。

まず、オブジェクトにはドット記法とブラケット記法があるんでしたねそういえば。
で、下図のように箱の名前=プロパティ、その中に入ってる値、という構成にんっているんでした。

画像1

この4-05演習では、
name:'Bob' みたいにひとセットでログ出力したいんだよお~~~ということで、さてどうしよう。
ざーっと初級を振り返って、for inでなんとかできそうな気がします。

まずは関数を噛まさずにログ出力してみます。

画像2

画像3

こんな感じ。
配列を踏まえた[ ]でkeyがあるのが段階を踏んでる感じします。

ログ出力できたので、これを関数に変換していきます。


// 演習4-05
// 引数としてオブジェクトを渡すと、その内容すべてを「プロパティ: 値」という形式でログ出力する関数を作成してみましょう。
function lesson4_05() {
 const personData = { name: 'Bob', gender: 'male', age: 25 };
 showData(personData);
}
function showData(data) {
 for (const key in data) {
   console.log(`${key}: ${data[key]}`);
 }
}

オブジェクトpersonDataを引数として関数に渡し、関数の中ではpersonData=dataとして振る舞って結果を表示する、っていう感じ、で合ってるかなあ。ちょっと何言ってんだって感じになってきました。

演習4-09 オブジェクトtrue/false

以下4-08のオブジェクトpersonに、性別を表すプロパティgender(値は'male'または'female')と、男性かどうかをtrueまたはfalseで返すメソッドisMaleを追加してみましょう。
function myFunction4_08() {

 const person = {
   name: 'Bob',
   age: 25,
   isAdult() {
     return this.age >= 18;
   }
 };

 console.log(person.isAdult());

}

これに、プロパティとisGenderみたいな感じのものを一個追加するという形。

function lesson4_09() {
 const person = {
   name: 'Bob',
   age: 5,
   isAdult() {
     return this.age >= 18;
   },
   gender: 'male',
   isGender() {
     return this.gender === 'male';
   }
 };
 console.log(person.isAdult());
 console.log(person.isGender());
}

ううう、過去のコードを見ながら四苦八苦。

return this.age で、このオブジェクト(this)の中に含まれているageだよーつうことだよなあ。GAS本を読んでいると、コンストラクタ内で~~インスタンスが生成~~ と書いてありますが、なんの呪文なんでしょうか。いずれ理解できることを期待します。がんばれ未来の自分。

return this.gender === 'male'  は
===の比較演算子で 左辺と右辺がデータ型も含めて等しければTRUE という判定をしています。


10 === 10 //TRUE
10 === '10' //FALSE


追記

画像4

提出後のコメント。なるほど。

演習4-10 計算

 プロパティとして
・縦の長さ: height
・横の長さ: width
と、メソッドとして縦の長さ×横の長さを計算して返すgetAreaを持つオブジェクトを定義してみましょう。

うう、なんとかかんとか。先ほどの演習と考え方は同じですね。

function lesson4_10() {
 const area = {
   height: 3,
   width: 5,
   getArea() {
     return this.height * this.width;
   }
 };
 console.log(area.getArea());
}


続く。

【課題2-5】5.スプレッドシート・シート・セルの操作

【課題2-6】6.スプレッドシートの操作(実践編)

【課題3】全員参加型FizzBuzz問題リレー

いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!