Google Apps Script

【GAS】たった1行で変数の値を入れ替える方法(分割代入)

gas分割代入サムネイル

プログラミングでは、変数の値を入れ替える処理がありますよね。

(例)x = 1, y = 3 → x = 3, y = 1

 

たとえば、ソートアルゴリズムの一種である「バブルソート」では、この入れ替え処理を使います。

 

変数 x と y の値を入れ替える処理を考えてみましょう。x の値を y に、y の値を x に入替(交換)します。

昔の私が書いたコードがこちら。

昔のもり
昔のもり
x と y の値を入れ替えるだけでしょ!余裕のよっちゃんだよ!

初心者なら一度は書いたことがあるのではないでしょうか(私だけ・・・?)

昔のもり
昔のもり
あれ?入れ替わってないぞ、おかしいな
モリ
モリ
・・・(笑)

【定番】一時変数を使用して値を入れ替える

よく見かけるのは、入れ替え対象の変数x, y 以外に、もう一つ別の変数(一時変数)を用意して、値を入れ替える方法です。

 

なんと、分割代入というワザを使うことで、一時変数を使わずに直接xとyの入れ替えができるんですよ!

ドットインストールのJavaScript講座で発見した驚きのワザです)

分割代入とは

「分割代入」とは、配列の値・オブジェクトのプロパティを、個別の変数に一括で代入する方法です。

簡単な例を紹介します。配列変数arrの各要素を、変数 x, y, z に一括で代入できます。

 

オブジェクトのプロパティを、個別変数に一括代入することも可能です。

分割代入で値を入れ替える

さて、ここからが本題!

分割代入を用いて、変数 x と y の値を入れ替えるコードがこちら。

 

たったの一行で入れ替えができる、すばらしきこの記述!

[x, y] = [y, x]

 

もり
もり
おぉ、まるで反則級の便利さ・・・

※反則ではありません

 

配列の要素の入れ替えもできます。

 

GASでバブルソート

この分割代入を用いて、バブルソートを書いてみました。

14行目で配列の要素の入れ替えをしています。たったの1行で書けるのでスッキリですね。

 

もり
もり
すっごい便利だから、みんなも是非使ってみてね~