概要
pythonの配列操作は慣れてきたが、GASにおいてJavascriptを使用してコーディングする際に、配列操作の違いについて考えるうちに時間が溶けた。今後簡単に思い出せるために、自分用メモを残しておく(※全然体系的にはまとめていません)
。
本記事はPythonとJavascriptの違いを対比しながら説明していく。
配列について
配列とは、[]で囲まれた複数の値のまとまりであり、$[1,2,3,4]$とかで表される。
JavaScriptではそのまま「配列」と呼ばれるが、Pythonでは名前が違い「リスト」と呼ばれる。ややこしいので、本稿においては双方ともに「配列」
と統一して呼ぶことにする。配列から数値を取り出したり、追加したりするわけだが、PythonとJavaScriptでは若干違う。
配列の要素をループにおいて取り出したいとき
- pythonでは
in [配列]
を使う - JavaScriptでは
of [配列]
やlist.forEach(function([配列]){})
を使う
list = [5,9,6]
for elem in list:
print(elem)
# 5
# 9
# 6
のようにpythonではin [配列]
と記述することで配列(リスト)の要素分だけループすることができる
一方、JavaScriptでは、
list = [5,9,6];
for (var elem of list){
console.log(elem);
}
// 5
// 9
// 6
とof [配列]
を使用すれば同一の結果となる。
別解として、以下のようにforEachメソッドを使う方法もある。
list = [5,9,6];
list.forEach (function(elem)){
console.log(elem);
}
// 5
// 9
// 6
Javascriptにおいてin [配列]
を使うと、配列のインデックス番号を取り出すことになる。(使い所は不明)
list = [5,9,6];
for (var elem in list){
console.log(elem);
}
// '0'
// '1'
// '2'
インデックス番号と配列要素どちらも取り出したいとき
- pythonでは
enumerate(list)
を使う - JavaScriptでは
forEach(function(◯,◯){...})
を使う
list = [5,9,6]
for i, elem in enumerate(list):
print(i, elem)
# 0 5
# 1 9
# 2 6
とenumerateを使用することで簡単に2つの要素を取り出せる。
一方、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
メソッドを使って取り出す。
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では、
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]
と開始と終了を指定してあげれば取り出せる。
基本的な使い方は開始・終了インデックスを指定するだけなのでほぼ一緒。
最後に
配列操作は基本的なものが多いが、言語をまたぐと途端に作業が失速する。
しっかりとまとめて次に備えたいと思う。余裕があれば追記する。