반응형
코테 준비를 하다보니 이해가 안되는 것들이 꽤나 있다.
그 중에 하나가 오름차순, 내림차순 정렬시 sort()를 있는 그대로 사용하지 않고
안에 인자를 넣어주는 것이었는데, 이게 이해되지 않는 이유는 내가 업무할 때 사용하는 데이터 타입이 거의 대부분 string이기 때문이다.
1. sort()
sort() 함수는 특정 배열 내의 요소를 규칙에 따라 정렬해주는 함수이다.
내가 업무에서 사용시 abc 순서로 정렬하며 많이 사용하게 되는데, 코딩테스트의 경우 type 이 number인 요소들을 비교하는 케이스가
더 많기 때문에 다른 추가적인 설정이 필요하다.
2. compareFn
sort 함수의 인자로 compareFn을 넣어줄 수 있다.
array.sort((a,b)=> a-b) // 오름차순
array.sort((a,b)=> b-a) // 내림차순
하지만 내부의 들어간 인자가 어떤 식으로 비교를 하는 것인지는 이해할 수가 없었다.
배열의 순서에 따라 바로 앞뒤 요소들끼리 비교하려 하는 것일 거라고 예상했으나, 실제로 찾아보니 꼭 그런 것 만은 아니다.
라는 이야기가 있었다.
자바스크립트 엔진 내에서 compare하는 알고리즘이 있다는데..
해당 알고리즘을 공부하기엔 코테 하나 제대로 못푸는 내가 과연 이해할 수 있을까? 라는 생각이 들어 그것은 일단 포기하기로 했다.
뭐 정보처리기사를 하면서 공부한 버블정렬 이런걸 쓰려나... 라는 생각정도가 든다.
3. 결론
string이 아닌 number type의 요소가 들어있는 배열을 정렬할 때는 sort() 의 인자에 위의 코드와 같은 식을 써주어야만 한다.
LIST
'Dev > JavaScript' 카테고리의 다른 글
[원리] 실수 표현 원리 (0) | 2023.05.30 |
---|---|
[JavaScript] parseInt() (0) | 2023.05.23 |
[JavaScript] Hoisting (0) | 2023.04.20 |
[JavaScript] Scope & Closure (0) | 2023.04.20 |
JavaScript를 시작하기 전에 (1) (0) | 2023.04.10 |