[JS] Array.sort() 주의할 점

mango7loco·2022년 2월 10일
0

Javascript

목록 보기
2/2
post-thumbnail

JS에서 array.sort()를 그냥 쓰면, array에 들어있는 원소들을 문자열로 변환하여 유니코드 순서대로 정렬을 한다. 이렇게 되면 문제점은 숫자를 오름차순이나 내림차순으로 정렬하려고 할 때, 예상과는 다른 결과가 나온다는 것이다.

sort()안에 넣어줄 콜백함수를 compareFunction()이라고 하면,
compareFunction(a,b)의
리턴값이 음수(ex. -1)이면 a가 b보다 앞에 정렬되고
리턴값이 0이면 바뀌지 않고
리턴값이 양수(ex. 1)이면 b가 a보다 앞에 정렬된다.

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

그래서 숫자가 원소로 들어있는 배열을 예시로 들면,

var numbers = [4, 2, 5, 80, 9];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// [2, 4, 5, 9, 80]

그러니 주의할 것.

profile
I can do this all day

0개의 댓글