javaScript를 이용해서 배열 안 숫자 요소들을 내림차순 또는 오름차순으로 정렬하기 위해서는 sort()
함수를 사용한다.
그러나 sort()
함수를 단독으로 사용하면 다음과 같은 오류가 발생한다.
const array = [1,3,11,2,6,22];
sorted.array.sort();
console.log(sorted); // [1,11,2,22,3,6]
의도한 대로 오름차순으로 정렬이 되는 게 아니라 첫째 자리 수를 기준으로 오름차순 정렬이 되어버린다.
이유는 정렬할 때 요소들을 문자열 취급하기 때문!
이를 해결하기 위해선 다음과 같은 함수를 매개변수로 전달해야 한다.
const array = [1,3,11,2,6,22];
array.sort((a,b) => a-b);
console.log(array); // [1,2,3,6,11,22]
-> a
와 b
로 두 요소를 전달하고 a-b
로 크기를 비교해서 양수, 0, 음수일 때 각기 다르게 return 한다.
a-b
의 값
- 양수인 경우: a를 앞으로
- 0인 경우: 그대로
- 음수인 경우: b를 앞으로
const array = [1,3,11,2,6,22];
array.sort((a,b) => b-a);
console.log(array); // [22,11,6,3,2,1]
-> a-b
식의 순서를 바꿔서 b-a
로 전달하면 됨.