Google Apps Script

【GAS入門】Arrayオブジェクトのmapメソッドの使い方

Arrayオブジェクトのmapメソッドの使い方をまとめておきます。

mapメソッドとは、Arrayオブジェクトの「反復メソッド」の1つです。

この記事では、

  • 反復メソッドとは?
  • mapメソッドとは?
  • mapメソッドを使ったサンプルコード

を紹介します。

Arrayオブジェクトの「反復メソッド」とは

反復(はんぷく)とは、「繰り返すこと」です。

学校のスポーツテストで「反復横跳び(はんぷくよことび)」ってありましたよね。中央線からスタートして、左右線をピョンピョンとまたぐ種目です。

いらすとやさん、さすが!画像ありました。「反復横跳び」は、左右移動をひたすら繰り返す動作をします。

これで、「反復(はんぷく)」=「繰り返す」のイメージができたと思います。

 

さて、GASの話に戻ります。

「反復メソッド」とは、「配列のすべての要素に対して、何らかの処理を繰り返すメソッド」です。

反復メソッド

【解説】mapメソッドとは

mapメソッドとは、Arrayオブジェクトの「反復メソッド」の1つです。

「反復メソッド」が、「配列のすべての要素に対して、何らかの処理を繰り返すメソッド」であることを前項で書きました。

mapメソッドは、「配列のすべての要素に対して、何らかの処理を繰り返し、その結果から得られる新しい配列を返すメソッド」です。

JavaScriptの公式リファレンスはこちら→Array.prototype.map()

mapメソッドの書き方

mapメソッドの書き方です。引数に「新しい配列を作成する関数」を与えます。

 

「新しい配列を作成する関数」には、次の3つの引数を与えることができます。

  • ①処理対象の「要素」【必須】
  • ②処理対象の要素(①)の「インデックス」【省略可】
  • ③処理対象の「配列」(元の配列)【省略可】

 

次の項から、具体的なコードを紹介します。

【サンプルコード】mapメソッドの使い方

mapメソッドを使ったサンプルコードをいくつか紹介していきます。

まずは、反復メソッドの「3つの引数」の役割をみていきましょう。

「反復メソッド」の3つの引数

ここで紹介する「3つの引数」は、mapメソッドだけでなく、「すべての反復メソッド」で共通です。

 

  • ①処理対象の「要素」【必須】
  • ②処理対象の要素(①)の「インデックス」【省略可】
  • ③処理対象の「配列」(元の配列)【省略可】

 

いったんmapメソッドのことは忘れて、「反復メソッド」の動きに注目します。3つの引数がどのように使われているかを確認します。

 

「配列(array)」に与えた「”ログを出力する”という関数(func)」が、配列のすべての要素に対して「繰り返し」実行されました。

実行結果を表にまとめます。配列のすべての要素に対して繰り返し実行されたことがわかります。

内容 引数名 出力結果
①処理対象の「要素」 value a → b → c
②処理対象の要素(①)の「インデックス」 index 0 → 1 → 2
③処理対象の「配列」(元の配列) array 常に [a,b,c]

 

上記のmapSample1_1では、funcという関数リテラルを作成し、mapメソッドにfuncを与えました。

mapメソッドに関数を直接与える書き方もあります。実行結果はmapSample1_1と同じです。

 

ここまでで、「反復メソッド」によって、配列に対して繰り返し処理が行われることが確認できました。

【おまけ】二次元配列を出力してみる

反復メソッドの仕組みを使って、二次元配列のすべての要素をログ出力するコードです。

最も簡単なmapメソッドの使い方

次にmapメソッドに焦点をあてます。

mapメソッドは、「配列のすべての要素に対して、何らかの処理を繰り返し、その結果から得られる新しい配列を返すメソッド」なので、「新しい配列」を作ってみましょう。

最も簡単な例として、「配列のすべての要素を2倍した新しい配列を作る」処理を書いてみます。

元の配列arrayはそのままで、新しい配列new_arrayができたことが確認できます。

 

続いて、mapSample2_1の以下2点を変更します。

  • 第2引数(index), 第3引数(array)の省略
  • 関数リテラル(func)を使わず、mapメソッドに直接関数を与える

実行結果は同じです。

【おまけ】アロー関数で短く書く

V8から使用できるようになった「アロー関数」を使って、さらに短く書くことができます。かっこいいですね。

mapメソッドでFizzBuzzを書いてみる

mapメソッドは、「配列のすべての要素に対して、何らかの処理を繰り返し、その結果から得られる新しい配列を返すメソッド」です。こんなこともできます。

以上、Arrayオブジェクトのmapメソッドの使い方を紹介しました!