Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 배열 정렬: 짝수 먼저, 그다음 홀수를 오름차순으로 정렬하는 방법

이번 글에서는 숫자 배열을 입력받아 짝수를 오름차순으로 먼저 정렬하고, 이어서 홀수를 오름차순으로 정렬하는 JavaScript 함수를 작성해 보겠습니다.

예를 들어, 입력 배열이 다음과 같다면 −

const arr = [2, 5, 2, 6, 7, 1, 8, 9];

기대하는 출력 결과는 다음과 같습니다 −

const output = [2, 2, 6, 8, 1, 5, 7, 9];

구현 코드

다음은 위 조건을 만족하도록 구현한 코드입니다 −

const arr = [2, 5, 2, 6, 7, 1, 8, 9];
const isEven = num => num % 2 === 0;
const sorter = ((a, b) => {
   if(isEven(a) && !isEven(b)){
      return -1;
   };
   if(!isEven(a) && isEven(b)){
      return 1;
   };
   return a - b;
});
const oddEvenSort = arr => {
   arr.sort(sorter);
};
oddEvenSort(arr);
console.log(arr);

코드 설명

  • isEven: 전달받은 숫자가 짝수인지 판별하는 화살표 함수입니다. 숫자를 2로 나눈 나머지가 0이면 짝수로 간주합니다.
  • sorter: 배열의 sort() 메서드에 전달되는 비교 함수입니다. 한쪽 요소가 짝수이고 다른 쪽이 홀수라면 짝수를 앞으로 배치하고(-1 또는 1 반환), 두 요소의 홀짝 여부가 같다면 값의 차이(a - b)를 반환해 오름차순으로 정렬합니다.

출력 결과

콘솔에 출력된 결과는 다음과 같습니다 −

[
   2, 2, 6, 8,
   1, 5, 7, 9
]

이처럼 Array.prototype.sort()에 커스텀 비교 함수만 잘 정의하면, 별도의 추가 배열이나 복잡한 로직 없이도 원하는 정렬 규칙(짝수 우선 + 오름차순)을 손쉽게 구현할 수 있습니다.