非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【GAS】2次元配列で複数キーでソートする方法

   

Google Apps Script(GAS)で2次元配列を複数キーでソートする方法を書き留めておきます。

今回使う配列はこちら。これをまず男女別に並び替えて且つ年齢順にします。

const data = [['村川 章博', '49', '男', '255-3844', '神奈川県鎌倉市台1-2-6'],
              ['橋本 靖子', '53', '女', '182-8817', '東京都板橋区赤塚3-5-11'],
              ['藤井 哲平', '32', '男', '353-9137', '埼玉県川口市本町2-1-13'],
              ['藤野 貴彦', '27', '男', '163-1972', '東京都練馬区関町南4-2-7'],
              ['鈴木 登子', '74', '女', '317-2006', '茨城県龍ケ崎市中根台4-3-3クレヴィア311'],
              ['和田 裕哉', '50', '男', '244-0390', '神奈川県横浜市鶴見区栄町通2-1-6'],
              ['有元 直樹', '76', '男', '348-3197', '埼玉県深谷市西島2-4-905'],
              ['石 萌', '58', '女', '138-0832', '東京都港区赤坂4-3-7'],
              ['直井 陽子', '61', '女', '201-0377', '東京都墨田区太平1-2-10'],
              ['関口 実', '66', '男', '141-8328', '東京都港区高輪3-1-305'],
              ['大島 敬史', '57', '男', '833-7479', '福岡県福岡市南区和田3-5-4'],
              ['井口 明代', '60', '女', '228-6476', '神奈川県横浜市鶴見区鶴見中央4-1-4'],
              ['進藤 究', '69', '男', '003-4513', '北海道札幌市北区北十条西1-3-6'],
              ['大本 徹', '64', '男', '294-9894', '千葉県船橋市習志野台1-5-9'],
              ['星 千文', '69', '女', '359-5468', '埼玉県志木市上宗岡3-2-6グランドール115'],
              ['渡邉 文彦', '42', '男', '242-4016', '神奈川県伊勢原市桜台1-2-3'],
              ['小林 剛', '57', '男', '922-8893', '石川県金沢市畝田中3-2-16'],
              ['前野 文', '63', '女', '111-2656', '東京都大田区池上2-5-3'],
              ['柾木 昭彦', '68', '男', '070-4447', '北海道札幌市中央区北五条西1-1-8'],
              ['松本 あづさ', '71', '女', '566-3111', '大阪府東大阪市善根寺町3-2-17'],
              ['平林 彩', '29', '女', '172-4293', '東京都中央区築地3-4-12'],
              ['加藤 智之', '61', '男', '115-4213', '東京都大田区仲六郷4-2-7'],
              ['柴田 智子', '28', '女', '207-6453', '東京都中野区野方1-1-16'],
              ['上原 正典', '31', '男', '200-7880', '東京都八王子市中野上町1-2-8'],
              ['柴田 浩嗣', '54', '男', '347-8113', '埼玉県川口市西川口2-1-602'],
              ['湊 賢治', '55', '男', '269-1430', '千葉県船橋市本町2-1-9'],
              ['鈴木 尚子', '39', '女', '432-3653', '静岡県静岡市葵区古庄2-1-104'],
              ['中島 知宏', '65', '女', '177-7473', '東京都大田区東糀谷3-2-5']];

 

ソースコードはこちら。不等号を左右変えることで昇順・降順に切り替えます。上の式ほど並び替えの優先は上位になり、Excelの並び替え機能のごとく複数のキーを駆使することができます。※日本語の並び替えは文字コード順になるので昇順か降順かは実際やってみて確認しましょう。男→女順は降順のようです。

data.sort((a, b) => {
  //男女は降順
  if (a[2] > b[2]) return -1;
  if (a[2] < b[2]) return 1;
  //年齢は昇順
  if (a[1] > b[1]) return 1;
  if (a[1] < b[1]) return -1;
  else 0;
});
 

 

結果はご覧の通りです。目的通りに並び替えられました。

 

スポンサーリンク

 - Google Apps Script