LoginSignup
0
0

More than 1 year has passed since last update.

GASの配列操作をPythonのようにしたい(自分用メモ)

Last updated at Posted at 2022-05-28

概要

pythonの配列操作は慣れてきたが、GASにおいてJavascriptを使用してコーディングする際に、配列操作の違いについて考えるうちに時間が溶けた。今後簡単に思い出せるために、自分用メモを残しておく(※全然体系的にはまとめていません)
本記事はPythonとJavascriptの違いを対比しながら説明していく。

配列について

配列とは、[]で囲まれた複数の値のまとまりであり、$[1,2,3,4]$とかで表される。
JavaScriptではそのまま「配列」と呼ばれるが、Pythonでは名前が違い「リスト」と呼ばれる。ややこしいので、本稿においては双方ともに「配列」と統一して呼ぶことにする。配列から数値を取り出したり、追加したりするわけだが、PythonとJavaScriptでは若干違う。

配列の要素をループにおいて取り出したいとき

  • pythonではin [配列]を使う
  • JavaScriptではof [配列]list.forEach(function([配列]){})を使う
python
list = [5,9,6]
for elem in list:
   print(elem)
# 5
# 9
# 6

のようにpythonではin [配列]と記述することで配列(リスト)の要素分だけループすることができる

一方、JavaScriptでは、

javascript
list = [5,9,6];
for (var elem of list){
   console.log(elem);
}
// 5
// 9
// 6

of [配列]を使用すれば同一の結果となる。
別解として、以下のようにforEachメソッドを使う方法もある。

javascript
list = [5,9,6];
list.forEach (function(elem)){
   console.log(elem);
}
// 5
// 9
// 6

Javascriptにおいてin [配列]を使うと、配列のインデックス番号を取り出すことになる。(使い所は不明)

javascript
list = [5,9,6];
for (var elem in list){
   console.log(elem);
}
// '0'
// '1'
// '2'

インデックス番号と配列要素どちらも取り出したいとき

  • pythonではenumerate(list)を使う
  • JavaScriptではforEach(function(◯,◯){...})を使う
python
list = [5,9,6]
for i, elem in enumerate(list):
   print(i, elem)
# 0 5
# 1 9
# 2 6

とenumerateを使用することで簡単に2つの要素を取り出せる。
一方、JavaScriptは、

javascript
list = [5,9,6];
list.forEach (function(elem, i){
   console.log(i, elem);
});
// 0 5
// 1 9
// 2 6

とforEachメソッドを使用する。

forEachメソッドには3つの引数を渡せる。文法はlist.forEach( function( value, index, array ) { 繰り返し処理を書く });である。valueは要素の値、indexはインデックス番号、arrayは現在処理中の配列の値が取り出せる。

配列の特定の範囲を取り出す(スライス)

  • pythonでは:を使って取り出す
  • Javascriptは.sliceメソッドを使って取り出す。
python
list = [5,9,6,8,4,2,7]
tmp_list1 = list[3:]
tmp_list2 = list[2:4]
print(tmp_list1, tmp_list2)
# [8,4,2,7] [6,8]

とコロンと開始インデックス番号と終了インデックス番号を使用することで簡単にスライスできる。〇〇以降の配列を取り出したければ、終了インデックスを省略すれば良い(〇〇以前は開始インデックスを省略)。
一方、JavaScriptでは、

javascript
list = [5,9,6];
tmp_list1 = list.slice(3)
tmp_list2 = list.slice(2,4)
   console.log(tmp_list1, tmp_list2);
});
// [8,4,2,7] [6,8]

と開始と終了を指定してあげれば取り出せる。
基本的な使い方は開始・終了インデックスを指定するだけなのでほぼ一緒。

最後に

配列操作は基本的なものが多いが、言語をまたぐと途端に作業が失速する。
しっかりとまとめて次に備えたいと思う。余裕があれば追記する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0