Google Apps Script

とっても簡単だった!Google Apps Scriptで配列を並べ替える方法

「Google Apps Script」で配列変数に入っているデータを並べ替えたくなりました。
パッと思いついたのは、「配列のデータをスプレッドシートに書き出して、シートの機能で並べ替える」ものでしたが、書き出さずにやる方法があれば簡単ですね。

と、いうわけで、スプレッドシートに書き出さず配列変数のデータを並べ替える方法をまとめました。

 

並べ替えはどうやって書けばいい?

「JavaScript」と同じく、「.sort」を使います。
並べ替えの結果は、戻り値ではなく、指定した配列変数内に直接反映されています。

構文はこちら↓

【配列変数名】.sort(【ソート順を定義した関数(オプション)】)

 

文字の並べ替えは?

下記のコードで辞書順に並べ替えられます。

function TextSort() {
  var arr = ['c','b', 'a','d','e'];
 
  arr.sort()
 
  console.log(arr);
}
 
// ⇒ 結果 [ 'a', 'b', 'c', 'd', 'e' ]

 

数字を昇順で並べ替えるには?

数字の並べ替えには、引数に「ソート順を定義した関数」を指定します。
昇順は「a - b」と指定します。

function NumberSortInAscendingOrder() {
  var arr = [10,50,30,20,40];
 
  arr.sort((a, b) => {return a - b;} );
 
  console.log(arr);
}
 
// ⇒ 結果 [ 10, 20, 30, 40, 50 ]

 

数字を降順で並べ替えるには?

降順は「b - a」と指定します。

function NumberSortInDescendingOrder() {
  var arr = [10,50,30,20,40];
 
  arr.sort((a, b) => {return b - a;} );
 
  console.log(arr);
}
 
// ⇒ 結果 [ 50, 40, 30, 20, 10 ]

 

2次元配列の場合は?

「ソート順を定義した関数」を工夫します。
具体的には、キーとなる要素数を指定します。
 

配列内1番目の文字列を基準に昇順で並べ替えるには?

function TwoDimensionalArraySort() {
  var arr = [['e',10],['c',50],['a',30],['d',20],['b',40]];
 
  arr.sort((a, b) => {
    if (a[0] > b[0]) {
      return 1;
    } else {
      return -1;
    }
  });
 
  console.log(arr);
}
 
// ⇒ 結果 [ [ 'a', 30 ], [ 'b', 40 ], [ 'c', 50 ], [ 'd', 20 ], [ 'e', 10 ] ]

 

配列内2番目の数字を基準に昇順で並べ替えるには?

function TwoDimensionalArraySort() {
  var arr = [['e',10],['c',50],['a',30],['d',20],['b',40]];
 
  arr.sort((a, b) => {return a[1] - b[1];} );
 
  console.log(arr);
}
 
// ⇒ 結果 [ [ 'e', 10 ], [ 'd', 20 ], [ 'a', 30 ], [ 'b', 40 ], [ 'c', 50 ] ]

 

日付順に並べ替えるには?

こちらにまとめました。

 

まとめ

「Google Apps Script」の並べ替えは「JavaScript」の構文がそのまま使えます。
2次元配列もちょっとした工夫で簡単にできてしまって、びっくりです。

-Google Apps Script
-, , , , , , , ,