LearnApplyShare

[js] Array.prototype.sort

August 28, 2018 - [array, sort]

자바스크립트는 Array.prototype.sort 를 통해 언어 차원에서 기본적인 정렬 기능을 제공한다. 배열의 sort 함수는 특별히 정확한 사용법을 익혀두는 것이 중요하다

sort 함수의 아래 몇가지 특징들은 기억을 해두자

  • 안정정렬이 아닐 수 있다
  • immutable 하지 않다.(original 배열의 상태를 변경한다)
  • 정렬속도와 복잡도는 브라우져의 구현에 따라 다를 수 있다

기본적으로 가나다 순 정렬

var fruit = ["cherries", "apples", "bananas"]
fruit.sort() // ['apples', 'bananas', 'cherries']

숫자 배열의 경우 숫자를 문자열로 변환후 가나다 순으로 정렬

var scores = [1, 10, 21, 2]
scores.sort() // [1, 10, 2, 21]

숫자 배열을 오름차순 정렬 하려면 이렇게

var scores = [1, 10, 21, 2]
scores.sort((a, b) => a - b) // [1, 2, 10, 21]

비교함수의 리턴값

sort함수에 인자로 전달되는 비교함수를 compareFunction 라고 할 때

  • compareFunction(a,b) 값이 0보다 작으면 a, b 순으로 정렬
  • compareFunction(a,b) 값이 0보다 크면 b, a 순으로 정렬
  • compareFunction(a,b) 값이 0이면 ab 에 대해 순서를 변경하지 않음
  • compareFunction(a,b) 는 요소 ab의 특정 쌍이 두 개의 인수로 주어질 때 항상 동일한 값을 반환해야 함. 일치하지 않는 결과가 반환되면 정렬 순서는 보장되지 않음

Ref.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort