티스토리 뷰

728x90

숫자들만 저장된 배열이 있을 때, 오름차순 또는 내림차순으로 정렬해야 하는 일이 자주 있습니다. 점수를 내림차순으로 정렬하여 순서를 매길 수도 있고, 어떤 길이를 오름차순으로 정렬하여 가장 짧은 길이를 찾을 때도 있습니다. 숫자가 나이라면, 나이 순서로 정렬하여 분류를 쉽게 할 수도 있습니다.

 

이 글에서는 숫자 배열을 오름차순, 내림차순으로 정렬하는 방법에 대해서 소개합니다.

 

오름차순 정렬

아래 코드는 숫자 배열을 오름차순으로 정렬합니다. sort()는 배열을 정렬하는 함수인데, 숫자 배열을 오름차순으로 정렬할 때는, 인자로 함수를 전달하여 어떤 순서로 정렬할 것인지 정렬 방식을 알려줘야 합니다. 아래 함수에서 "a - b"는 배열 값을 서로 빼서 값들의 순서를 정하는 것으로, 이렇게 정렬하면 전체적으로 오름차순 정렬이 됩니다.

let arr = [8, 4, 2, 9, 3, 6, 7, 1, 5];

arr.sort(function (a, b) {
  return a - b;
});

console.log(arr);

Output:

[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20 ]

 

만약 아래처럼 sort()에 함수를 인자로 전달하지 않으면, 숫자를 문자열로 변환하고 정렬하게 됩니다. 그럼 아래처럼 잘못 정렬이 됩니다. 겉보기엔 오름차순으로 정렬되는 것 같지만 "1, 10, 2, 20"으로 10 단위의 숫자가 1 바로 뒤에 정렬됩니다. 문자열로 순서를 정하기 때문에 2보다 10이 더 작은 값이라고 처리됩니다. (10은 첫 글자가 1이고, 2는 2이기 때문에) 따라서, 숫자 정렬 규칙이 구현된 함수를 인자로 전달해야 합니다.

let arr = [8, 4, 2, 9, 3, 6, 7, 1, 5, 10, 20];

arr.sort();

console.log(arr);

Output:

[ 1, 10, 2, 20, 3, 4,  5, 6,  7, 8, 9 ]

 

내림차순 정렬

내림차순은 정렬 함수를 오름차순의 반대로 구현하면 됩니다. 즉, 오름차순은 "a - b" 였다면, 내림차순은 "b - a"로 변경하여 값들의 크기를 반대로 계산하도록 만들면 됩니다.

 

let arr = [8, 4, 2, 9, 3, 6, 7, 1, 5, 10, 20];

arr.sort(function (a, b) {
  return b - a;
});

console.log(arr);

Output:

[ 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]

 

화살표 함수를 사용하여 정렬

위의 코드들은 화살표 함수를 사용하여 아래와 같이 구현할 수 있습니다. sort()에 전달되는 함수의 구현부가 간결해졌습니다.

let arr = [8, 4, 2, 9, 3, 6, 7, 1, 5, 10, 20];

arr.sort((a, b) => a - b);

console.log(arr);

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함