[Array] sort()

설정·2021년 2월 18일
0

sort정렬을 하다가 숫자 정렬 시에 원하는 형식으로 정렬되지 않아서 정리해본다.

Array.prototype.sort()

sort() 메서드는 배열 안의 원소들을 정렬하는 함수로 기본 정렬 순서는 문자열의 유니코드를 따른다.

구문

arr.sort([compareFunction])

compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 유니코드 순서로 비교하여 정렬된다는 점을 주의!
그래서 숫자 비교 시 원하는대로 정렬이 이루어지지 않은거였음.

🐞 compareFunction(a,b)

  • result
    • -1 : a가 b보다 작을 경우, 즉 a가 먼저온다.( a < b )
    • 0 : a와 b가 같을 경우 ( a = b )
    • 1 : a가 b보다 클 경우, 즉 b가 먼저온다. ( a > b )

문자정렬

var stringArray = ['orange', 'apple', 'banana']

stringArray.sort(); 
// apple, banana, orange

숫자정렬

var number = [1, 30, 4, 21, 600];

/* 에러 */
number.sort();
// [1, 21, 30, 4, 600]
// ASCII 문자 순서로 정렬되어 원하는 정렬값이 나오지 않음

/* 정상 */
number.sort(function(a,b) { // 오름차순 정렬
  return a-b;
});
// [1, 4, 21, 30, 600]

/* 정상 */
number.sort(function(a,b) { // 내림차순 정렬
  return b-a;
});
// [600, 30, 21, 4, 1]

📚 Reference

0개의 댓글