Javascript sort() 메서드 사용시 주의사항

Song-Minhyung·2023년 4월 9일
0

Javascript

목록 보기
7/8

❓ 문제가 있던곳

코테를 풀다가 sort를 사용할 일이 있었다.
그래서 그냥 sort에 아무런 함수도 넣지 않고 사용했다.
테스트케이스는 모두 통과하는데 틀렸습니다 라고 계속 나와서 진짜 뭐가 문제인지 몇시간동안 쳐다본것같다.

문제는 sort 메소드의 사용법을 잘못 알고 있었다.

👉 sort 메소드 사용법

📌 기본적인 방법

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;
}

콜백함수는 이런식으로 생겼다.

a 와 b를 비교할 때
리턴값이 0이면 순서를 변경하지 않고
0보다 작으면 a가 b 앞으로 오고
0보다 크면 b가 a 앞으로 오게 정렬한다.

오름차순 정렬

const arr = [4, 6, 1000, 1, 9, 2, 100];
arr.sort(( a , b ) => a - b);
console.log(arr); // [1, 2, 4, 6, 9, 100, 1000];

정렬할 때 4 6 을 비교한다 해보자
4 - 6 = -2 이므로 0보다 작다. 그래서 4 는 6 앞으로 온다.

이런식으로 정렬된다.

내림차순 정렬

a, b 순서만 바꿔주면 된다.

const arr = [4, 6, 1000, 1, 9, 2, 100];
arr.sort(( a , b ) => b - a);
console.log(arr); // [1000, 100, 9, 6, 4, 2, 1];

📌 매개변수를 넣지 않고 사용한다.

내가 문제가 됐던 이유가 매개변수에 아무것도 넣지 않고 사용했기 때문이다.
만약 함수를 넣지 않는다면 유니코드 순서대로 정렬이 된다.
그래서 위의 코드는 아래와 같이 정렬된다.

const arr = [4, 6, 1000, 1, 9, 2, 100];
arr.sort();
console.log(arr); // [1, 100, 1000, 2, 4, 6, 9];
profile
기록하는 블로그

0개의 댓글