function solution(strings, n) {
// strings 배열
// n 번째 문자열 비교
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
이 코드를 보고 처음보는 함수 localeCompare
에 대해 배웠다. 그리고 sort()
활용법도 배웠다.
localeCompare
함수는 참조 문자열이 정렬 순으로 지정된 문자열 앞 혹은 뒤에 오는지, 혹은 동일한 문자열인지 나타내는 수치를 반환하는 메소드이다.
// "a"는 "c" 전에 위치하므로 음수 값을 반환
'a'.localeCompare('c'); // -2 혹은 -1 (또는 다른 음수 값)
// 알파벳 순으로 단어 "check"는 "against"보다 뒤에 위치하므로 양수 값을 반환
'check'.localeCompare('against'); // 2 혹은 1 (또는 다른 양수 값)
// "a"와 "a"는 서로 동등하므로 중립 값 0을 반환
'a'.localeCompare('a'); // 0
근데 음수, 양수, 0을 반환하는 것과 'sort'의 상관관계는 무엇인지 바로 떠오르지 않았다. 찾아보니 다음과 같은 관계가 있었다.
sort
함수를 이용해서 배열 내림차순 및 오름차순 정렬을 할 수 있다는 것을 배웠다.
다음은 내가 여태껏 썼던 메소드 방식이다.
// 오름차순 정렬
const array = [1,3,11,2,6,22];
array.sort((a,b) => a-b);
console.log(array); // [1,2,3,6,11,22]
// 내림차순 정렬
const array = [1,3,11,2,6,22];
array.sort((a,b) => b-a);
console.log(array); // [22,11,6,3,2,1]
-> 위와 같이 a-b
혹은 b-a
의 값이 무엇이냐에 따라 오름차순/내림차순으로 정렬을 할 수가 있다
📌
a-b
의 값이
양수
인 경우: a를 앞으로0
인 경우: 그대로음수
인 경우: b를 앞으로
그렇기 때문에 위에
localeCompare
이음수
혹은양수
중 어떤 값을 반환하냐에 따라sort
함수가 작동하는 원리인 것이다!! 넘나 신기하다!!