[Javascript] Array.sort()와 Array.sort((a, b) => a - b) 차이

Rachaen·2023년 3월 19일

프로그래머스 중앙값 구하기 문제를 풀던 중

function solution(array) {    
    return array.sort().at(Math.floor(array.length/2));
}

로 했더니 44.4점이 나왔다.

console.log(array.sort())를 해도 테스트케이스에서는 잘만 오름차순으로 해주는데...

어째서?

그래서 MDN에서 Array.sort()에 대해 찾아봤다.
arr.sort([compareFunction])

  • 정렬 순서를 정의하는 함수. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다.
  • compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 유니 코드 코드 포인트 순서로 문자열을 비교하여 정렬됩니다. 예를 들어 "바나나"는 "체리"앞에옵니다. 숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니 코드 순서에서 "9"앞에옵니다.

숫자타입을 문자타입으로 형변환하여 정렬을 하기 때문이었다.

그래서

function solution(array) {    
    return array.sort((a, b) => a - b).at(Math.floor(array.length/2));
}

로 고쳤더니 통과하였다.


MDN Array.prototype.sort()

profile
개발을 잘하자!

0개의 댓글