[プログラマレベル2]ファイル名ソートKACA 2018

5520 ワード

質問する


https://programmers.co.kr/learn/courses/30/lessons/17686

問題を解く


コード#コード#

function solution(files) {
    return files.sort((a, b) => {
        const headerA=a.match(/^\D+/)[0].toLowerCase();
        const headerB=b.match(/^\D+/)[0].toLowerCase();
        
        if(headerA<headerB){
            return -1;
        }
        if(headerA>headerB){
            return 1;
        }
        const numberA=a.match(/\d+/)[0].replace(/^0+/, '');
        const numberB=b.match(/\d+/)[0].replace(/^0+/, '');
        return numberA-numberB;
        
    })
}
これは正規表現を用いた解答である.二分の解参照.すごいソートですね...
ここには理解できないところがありますが、なぜmatchに[0]を付けたのか理解できません.
一致する場合のみ、戻り値は配列として表示されます.したがって、正しいインデックスを指定する必要があります.


参考資料

  • ココア
    https://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/
  • を参照
    https://after-newmoon.tistory.com/82