見出し画像

【GAS】初級の復習 その3(配列)

▼こちらの続き

引き続き、GAS初心者講座の復習を進めている。もっと早くやっておけば良かったと思うことばかり。中級講座と並行しているけど、中級の宿題になかなか手をつけられていない😱

今回は配列。配列はスプレッドシートでGASを組もうとすると避けて通れないので、一応理解している(つもり)。でもやっぱり無意識に使っていないことは結構あった。

配列のループ

for文とfor..of文による配列のループ。for文がとにかく好きなので、for..of文はあまり使うことがない。用途によってはfor文よりシンプルに書けるので、食わず嫌いせずに使い分けられるようになりたい。

function myFunction3_10() {
 const members = ['Bob', 'Tom', 'Jay', 'Tom'];

 for (let i = 0; i < members.length; i++) {
   console.log(members[i]); 
 }

 for (const member of members) {
   console.log(member); 
 }
}

結果はどちらも同じで、配列の要素が順番にBob→Tom→Jay→Tomと出力される。for..of文は配列の全てを回すとき、for文はカウント変数に何らかの条件を付けるときに使いやすいと解説があった。なるほど。やっぱり1回講座を聞いただけだと、忘れていることや聞き逃していることがある。


▼インデックスが大きい順にログ出力するスクリプト

function myFunction3_11() {
 const members = [`Bob`, `Tom`, `Jay`, `Tom`];

 for (let i = members.length - 1; i >= 0; i--) {
   console.log(members[i]);
 }

 let i = members.length - 1;
 while (i >= 0) {
   console.log(members[i]);
   i--;
 }
}

これまで食わず嫌いしていたwhile文でも書いてみたけど、なんかコードがイケてない。ちなみにfor..of文はインデックス0から始まるので、この用途(インデックスを降順に出力したいとき)では使えない。


二次元配列

これも講座を受けたときはだいぶワニワニパニックだったけど、実務でかなり使っているのでそんなに苦手意識はない。

▼二次元配列の要素を順番に取り出すスクリプト

function myFunction3_13() {
 const numbers = [[10, 30, 20, 40], [11, 31, 21], [12]];

 for (let i = 0; i < numbers.length; i++) {
   for (let j = 0; j < numbers[i].length; j++) {
     console.log(numbers[i][j]);
   }
 }
}

ポイントは、条件式の中にnumbers.lengthとnumbers[i].lengthと書くこと。これも理解できるまで苦戦した記憶があるけど、今は大丈夫。

ちなみにfor..of文で書くとこうなる。↓

function myFunction3_13_02() {
 const numbers = [[10, 30, 20, 40], [11, 31, 21], [12]];

 for (const number of numbers){
   for (const element of number){
     console.log(element);
   }
 }
}

うーん、やっぱりfor文が好き。君に決めた。(?)


配列を引数として渡す

配列は引数として関数に渡すこともできる。あああ、苦手なやつだけど前回の復習で少しは理解したはず。

▼ 配列を引数として渡すとその要素数を戻り値として返す関数

function myFunction3_14() {
 const members1 = [`Bob`, `Tom`, `Jay`];
 console.log(lenArray(members1)); //3

 const members2 = [[`Bob`, `Tom`, `Jay`]];
 console.log(lenArray(members2)); //1
}

function lenArray(array){
 return array.length;
}

お、意外と簡単。苦手なアロー関数でも書いてみた。↓

function myFunction3_14_02() {
 const lenArray = array => array.length;

 const members1 = [`Bob`, `Tom`, `Jay`];
 console.log(lenArray(members1)); //3

 const members2 = [[`Bob`, `Tom`, `Jay`]];
 console.log(lenArray(members2)); //1
}

う、う、動いたー!(当たり前)


次回の復習はいよいよオブジェクト。配列で事足りてしまうので、正直あまりわかっていない。アロー関数の次ぐらいに苦手意識があるやーつ。
でもオブジェクトの理解が浅いまま中級を受けて「classようわからん・・」となってしまったのでしっかり復習に取り組みたい。

ノンプロ研のGAS講座は、演習や宿題にこれまで学んだ要素が絶妙に盛り込まれていて、理解しないままだと難易度が高くなっていく。特に中級。良く考えられてるなぁ。

次回に続く。

この記事が気に入ったらサポートをしてみませんか?