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;
})
}
정규표현식을 활용한 풀이이다. 이분의 풀이를 보고 참고했다. 엄청난 sort 정렬이다...
여기서 이해가 안갔던 부분이 있는데, 왜 match뒤에 [0]을 붙히냐가 이해가 되지 않았다.
살펴보니 match만 했을 때 리턴값은 배열의 형태로 나타난다. 따라서 정확한 인덱스를 지정해줘야한다.