関数・配列(GASの学習_3)

この連載では僕が所属しているノンプロ研で受講した、GAS初級講座での気づきをまとめています。前回の記事はこちらです。

hirocom777.hatenadiary.org

前回は第2回「制御構文」にいて学びました。C言語に似ていますが、ちょっと違うところもありました。

今回は第3回「関数・配列」です。ここはGASの特徴が表れてくるところだと思います。

関数

講座では関数のことを「一連の処理の集まり」と教わります。でも、数学などで関数というと、値を入れると何かの処理をして返す仕組みとして教わります。 GASの関数も値を設定して、値を返す機能があります。

以下は僕の解釈です。昔(別のプログラム言語で)は「一連の処理の集まり」を「サブルーチン」と呼んでいました(今でも一部では呼んでいる)。でも、これって値を返さない関数なんですよね。なので、関数のことを「一連の処理の集まり」と呼ぶようになったのだと思います。

関数の使い方

関数の記述方式は以下になります。

function 関数名(仮引数1, 仮引数2,…) {
  //処理
  return 戻り値;
} 

呼び出し方は以下になります。

関数名(引数1, 引数2,…)

以下は関数の記述例です。

function myFunction3_03() {
  console.log(calcRemainder(3, 4));
}

function calcRemainder(X, Y) {
  return X % Y;
}

関数は関数の中にも記述できます。このように記述すると記述された関数の中からのみ呼び出せるようになります。

function myFunction() {
  console.log(calcRemainder(9, 4));
  function calcRemainder(x, y) {
    return x % y;
  }
}

関数リテラル

関数の記述方法には、関数リテラルという方法が用意されています。先頭に「function」や関数名を書きません。よって「匿名関数」と呼ばれたりします。 以下は関数リテラルの代表的な書き方である「アロー関数」の記述方式です。 関数を変数・定数に格納したり、引数に渡したりする用途で用います。

const 関数名 = (仮引数1, 仮引数2,…) => {
  //処理
  return 戻り値;
}; 

関数名(引数1, 引数2,…)

仮引数が1つだけの場合には、仮引数を囲む丸かっこを省略できます。

仮引数 => {
  //処理
  return 戻り値;
} 

また処理がreturnのみの場合は、処理を囲む波かっことreturn句を省略できます。

(仮引数1, 仮引数2,…) => 戻り値

配列

配列は他のプログラム言語にもあります。以下のように角かっこで囲んで記述します。

[値1, 値2, …]

値のデータ型は異なるものが混在できます。配列の値にも配列を指定できます。この場合2次元(またはそれ以上)の配列となります。以下は2次元配列の記述例です。

[[10, 30, 20, 40], [11, 31, 21], [12]]

これはPythonのリストオブジェクトと似ていますね。

配列の参照

配列の要素を参照するには、配列名に角かっこでインデックス番号を指定します。

const numbers = [[10, 30], 11]

とした場合、各要素の参照方法は以下のようになります。

console.log(numbers[0]);
//[ 10, 30 ]
console.log(numbers[0][1]);
//30
console.log(numbers[1]);
//11

インデックスを使って値を代入することもできます。以下はインデックスを使用した代入の例です。

const numbers = [[10, 30], 11];
numbers[1] = [0,1];
console.log(numbers);
//[ [ 10, 30 ], [ 0, 1 ] ]

上の例では、constで宣言した定数配列の要素を変更しています。定数自体に再代入することはできませんが、配列の要素は変更できる事は覚えておきましょう。

配列のプロパティ

配列にはプロパティがあります。ここではlengthプロパティをご紹介します。lengthプロパティは配列の要素数を取得します。

const members = ['Bob','Tom','Jay','Tom'];
console.log(members.length);
//4

for文による繰り返し

ここでご紹介した事を応用すれば、前回ご紹介したfor文を使用した反復を配列に応用できます。

for (let i = 0; i < 配列.length; i++) {
  // 配列[i]で参照できる
} 

for...of文による繰り返し

for...of文を使用しても反復を配列に使用できます。

for (const 定数 of 配列) {
  // 処理
} 

これで定数に配列の各要素が設定されます。

次回はオブジェクト

いかがでしょうか。前回と違ってJavaScript(GAS)の特徴がわかってきましたね。次回はオブジェクトです。お楽しみに!!

hirocom777.hatenadiary.org GAS関連記事まとめ - HiroCom777の学習記録