【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; });
結果はご覧の通りです。目的通りに並び替えられました。
スポンサーリンク