티스토리 뷰
숫자들만 저장된 배열이 있을 때, 오름차순 또는 내림차순으로 정렬해야 하는 일이 자주 있습니다. 점수를 내림차순으로 정렬하여 순서를 매길 수도 있고, 어떤 길이를 오름차순으로 정렬하여 가장 짧은 길이를 찾을 때도 있습니다. 숫자가 나이라면, 나이 순서로 정렬하여 분류를 쉽게 할 수도 있습니다.
이 글에서는 숫자 배열을 오름차순, 내림차순으로 정렬하는 방법에 대해서 소개합니다.
오름차순 정렬
아래 코드는 숫자 배열을 오름차순으로 정렬합니다. 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);
'개발 > Javascript' 카테고리의 다른 글
[Javascript] 문자열이 숫자인지 확인 (1) | 2023.11.14 |
---|---|
[Javascript] 문자열 배열 정렬 (오름차순, 내림차순) (0) | 2023.11.07 |
[Javascript] delay 함수 구현하기 (0) | 2023.11.05 |
[Javascript] 숫자 3자리마다 콤마(,) 찍기 (1) | 2023.10.29 |
[Javascript] 소수점 2자리로 반올림하기 (0) | 2023.10.20 |
- Total
- Today
- Yesterday
- 주황버섯
- 나무던전
- 와일드보어의 땅
- 파이썬
- java
- Skia
- Flutter
- android
- 다크스텀프
- javascript
- 앞자리 0 제거
- 진료 병원 찾기
- DART
- 포르투갈
- Python
- 와보땅
- 12e 트램
- 리스보아 카드
- 15e 트램
- 메이플랜드
- 파란버섯
- 포르투
- 네키
- 원숭이의숲
- 모루정원
- 리스본
- 오블완
- aosp 빌드
- 티스토리챌린지
- adb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |