function solution(files) {
files.sort((a,b)=>{
let aHead=a.match(/^\D+/)[0].toLowerCase();
let bHead=b.match(/^\D+/)[0].toLowerCase();
if(aHead > bHead) return 1;
if(aHead<bHead) return -1;
return parseInt(a.match(/\d+/)[0])-parseInt(b.match(/\d+/)[0])
})
return files;
}
정규식과 일치하면 배열로 리턴한다.
aHead, bHead = 숫자가 아닌것들중에 숫자가 나타나기전 첫번째 문자(열)
parseInt(a.match(/\d+/)[0]) = 숫자가 아닌게 나타나기전 첫번째 숫자로만 이루어진 문자(열). parseInt를 해준 이유는 '010'처럼 앞에 0이 붙어있는 문자열때문이다.
처음에는 search로 index를 찾아서 문자열을 자르고 자르고 해서 코드양이 방대해졌는데 match 함수 사용과 정규식 중 '+'를 써서 그렇게 안해도 된다는 사실을 배웠다 !