Sort Method를 이용하여 정렬하기

ᅳ남훈·2021년 8월 19일
0
post-thumbnail

여기 나의 구세주가 있다.
바로 sort() Method 이다.
이 sort 함수는 배열을 정렬해준다.
기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.
하지만 sort 함수에 인자를 넣어주면 상황은 달라진다.
아래에서 살펴보자.

정렬의 방식은 이 함수가 a, b 두개의 인자를 받을 경우
이 함수의 리턴값이 0보다 작을 경우 a가 b보다 앞으로,
이 함수의 리턴값이 0보다 클 경우 b가 a보다 앞으로
오도록 정렬을 한다.
리턴값이 0일 경우에는 a와 b의 순서는 변경하지 않는다.
(리턴값을 주는 예는 아래에서 확인해보도록 하자)


Example-1 (sort()함수의 기본 특성)


위에서 설명했듯이 위 코드처럼 각 요일을 sort해준다고
Moday, Tuesday, Wednesday ... 의 순서대로
정렬되는게 아니라, 유니코드 순서에 의해 정렬된다.
숫자역시 마찬가지이다.


Example-2 (오름차순 정렬)

이제서야 오름차순으로 정렬되는 것을 볼 수 있다.
위에서 설명한대로 return값에 따라
인자들의 위치가 정해진다.


Example-2-1 (내림차순 정렬)

반대로, 오름차순이 아닌 내림차순으로 정렬할 때는
위 코드와 같이 return값을 변형하면 된다.


Example-3 (오름차순 정렬 단순화)

return값에 의해 인자의 위치가 정렬된다는 개념을
조금 더 생각해보면, 위 코드와 같이 a-b로
리턴값을 음수 또는 양수로 나오게 해 정렬이 가능하다.


Example-3-1 (내림차순 정렬 단순화)

역시 반대로, b-a를 해주면 내림차순으로 정렬된다는 것을
생각해낼 수 있다.


Example-4 (mutable한 배열)

배열은 mutable하기 때문에,
위 코드처럼 arr1을 sort한 값을 arr2로 선언해주고,
arr1에서 pop()를 해줬을 때 arr1과 arr2 모두에서
마지막 숫자 50000이 빠진다는걸 알 수 있다.


Example-5 (대소문자 구분 없이 정렬)

문자열을 sort할 시 위에서 설명했듯이
유니코드의 순서에 따라 정렬되는데,
유니코드상 대문자는 소문자의 앞에 있기 때문에
대문자가 맨 앞에 오게 된다.
하지만 위 코드처럼 toUpperCase() 함수를 이용해
대소문자 구분 없이 정렬을 할 수 있다.


Example-6 (객체 정렬)

객체 역시 sort를 이용한 정렬이 가능하다.
위 코드와 같이 키-값 쌍 형태로 return을 해주면 된다.

profile
가보자!

0개의 댓글