본문 바로가기
Javascript

헷갈리는 Javascript Compare 함수

by 안자바먹지 2021. 3. 29.
728x90

먼저 자바스크립트의 sort 함수는 다음과 같이 사용한다.

array.sort([Compare Function])

자신이 원하는 조건으로 정렬을 하기위해 직접 Comapre Function을 구현해야 한다.

 

Compare Function의 반환값에 따라 정렬이 다르게 동작한다.

  1. 반환값이 0 일 때 -> 변경 없음
  2. 반환값이 0 보다 클 때 -> 오름차순
  3. 반환값이 0 보다 작을 때 -> 내림차순 (음수일 때만 위치가 바뀐다고 생각하면 됨.)

 

const arr = [1, 2, 3]
arr.sort((a, b) => b - a)

 

라는 코드가 존재할 때 파라미터 a, b에 각각 1, 2 가 들어올 것이라고 예상할 수도 있지만 반대로 2, 1이 들어온다.

그렇기 때문에 이 부분이 좀 헷갈린다면

 

arr.sort((next, prev) => prev - next)

 

라고 생각하면 좀 덜 헷갈릴것 같다.

 

 

정리

오름차순

arr.sort((a, b) => a - b)

arr.sort((next, prev) => next - prev)

 

만약 여기서 b(이전값)가 a(다음값)보다 더 크다면 음수가 되므로 위치가 바뀐다.

이말인 즉슨, 이전값이 다음값보다 클 때 위치가 바뀌므로 큰 값이 뒤로 가기 때문에 오름차순이 된다.

 

 

내림차순

arr.sort((a, b) => b - a)

arr.sort((next, prev) => prev - next)

 

a(다음값)가 b(이전값)보다 더 크면 음수가 되므로 위치가 바뀐다.

그럼 큰 값이 앞으로 오기 때문에 내림차순이 된다.

728x90

댓글