문자열 배열은 sort() 호출 시, 알파벳 순서로 정렬된다.
<script>
const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];
arr.sort();
console.log(arr); // [ 'apple', 'banana', 'grape', 'kiwi', 'melon' ]
</script>
내림차순 정렬에는 if문을 사용하여 문자열 두개를 비교하여 내림차순으로 만드는 방법도 있지만
간단하게 reverse()를 사용하여 구현이 가능하다.
<script>
const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];
arr.sort();
arr.reverse()
console.log(arr); // [ 'melon', 'kiwi', 'grape', 'banana', 'apple' ]
</script>
숫자 배열에 sort() 수행 시, 숫자를 문자열로 변환하여 정렬을 하기때문에 기존의 문자열 정렬 방식처럼 사용하면 안된다.
sort()에 두개의 숫자를 비교하는 함수를 구현하여 인자로 전달해야 한다.
아래와 같이 a - b의 값을 리턴하도록 구현하면 오름차순이 된다.
a가 크면 양수, b가 크면 음수, 같으면 0이 리턴되기 때문에 이렇게 간단히 구현할 수 있다.
<script>
const arr = [22, 11, 2, 9, 1, 5];
arr.sort(function (a, b) {
return a - b;
});
console.log(arr); // [ 1, 2, 5, 9, 11, 22 ]
</script>
화살표 함수를 사용하여 더 간단하게 나타내기
<script>
const arr = [22, 11, 2, 9, 1, 5];
arr.sort((a,b) => a - b);
console.log(arr); // [ 1, 2, 5, 9, 11, 22 ]
</script>
숫자 배열 내림차순은 오름차순과 반대로 b - a 로 구현이 가능하다.
<script>
const arr = [22, 11, 2, 9, 1, 5];
arr.sort((a, b) => b - a);
console.log(arr); // [ 22, 11, 9, 5, 2, 1 ]
</script>