JavaScript에서 사용자 정의 정렬 함수(custom sort function)를 정의하려면 배열의 첫 번째 값과 두 번째 값을 서로 비교하는 로직을 직접 작성해야 합니다.
정렬 함수의 기본 원리
사용자 정의 정렬 함수는 비교 결과에 따라 다음과 같은 값을 반환합니다.
- 첫 번째 값이 두 번째 값보다 크면 →
-1반환 - 첫 번째 값이 두 번째 값보다 작으면 →
1반환 - 두 값이 같으면 →
0반환
위 방식대로 구현하면 데이터가 내림차순(descending order)으로 정렬됩니다. 반대로 오름차순(ascending order)으로 정렬하고 싶다면 반환값인 -1과 1의 위치를 서로 바꿔주면 됩니다.
예제 코드
다음은 이름 배열을 내림차순으로 정렬하는 예제 코드입니다.
var name = ['David', 'Adam', 'John', 'Bob'];
name.sort(function (first, second) {
if (first > second) {
return -1;
}
if (first < second) {
return 1;
}
return 0;
});
console.log(name)프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 아래 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo263.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 콘솔에 다음과 같은 출력 결과가 표시됩니다.
PS C:\Users\Amit\javascript-code> node demo263.js [ 'John', 'David', 'Bob', 'Adam' ]
출력 결과를 보면 알파벳 순서가 아닌 역알파벳 순(내림차순)으로 이름이 정렬된 것을 확인할 수 있습니다. 이처럼 sort() 메서드에 비교 함수를 직접 전달하면 문자열뿐만 아니라 숫자, 객체 배열 등 원하는 기준으로 자유롭게 정렬할 수 있습니다.