JavaScript에서 배열을 정렬하려면 sort() 메서드를 사용합니다. 다만 주의할 점이 있습니다. sort()는 기본적으로 배열 요소를 문자열로 변환한 후 정렬하기 때문에, 숫자를 정렬할 때는 반드시 비교 함수(compare function)를 함께 전달해야 올바른 결과를 얻을 수 있습니다.
숫자 정렬 예제
아래 코드는 비교 함수를 사용하여 숫자 배열을 오름차순으로 정렬하는 방법을 보여줍니다.
<!DOCTYPE html>
<html>
<body>
<script>
var arr = [75, 20, 90, 9, 49, 32, 69, 66];
document.write("Initial Values: "+arr);
function myFunction() {
arr.sort(function(val1, val2){return val1 - val2});
document.write("<br>Sorted Values: "+arr);
}
myFunction();
</script>
</body>
</html>출력 결과
Initial Values: 75,20,90,9,49,32,69,66 Sorted Values: 9,20,32,49,66,69,75,90
비교 함수의 동작 원리
비교 함수는 두 개의 인자(val1, val2)를 받아 그 차이를 반환합니다.
- 반환값이 음수이면 val1이 val2보다 앞에 위치합니다.
- 반환값이 양수이면 val2가 val1보다 앞에 위치합니다.
- 반환값이 0이면 두 요소의 순서가 유지됩니다.
내림차순으로 정렬하기
내림차순 정렬이 필요하다면 비교 함수에서 뺄셈 순서만 바꾸면 됩니다.
arr.sort(function(val1, val2){return val2 - val1});또는 ES6의 화살표 함수를 사용하면 더욱 간결하게 작성할 수 있습니다.
arr.sort((a, b) => a - b); // 오름차순 arr.sort((a, b) => b - a); // 내림차순
이처럼 sort()에 적절한 비교 함수를 전달하면 숫자 배열을 정확하고 효율적으로 정렬할 수 있습니다.