배열을 오름차순으로 정렬합니다.
** 배열 요소들을 문자열로 변환한 뒤 비교합니다.
- 비교 함수가 없을 때 동작
const salary = [3000, 5300, 4000, 3600, 7000];
console.log(salary.sort())
// [3000, 3600, 4000, 5300, 7000]
const salary = [3000, 5300, 4000, 3600, 7];
console.log(salary.sort())
// [3000, 3600, 4000, 5300, 7]
// 문자열로 변환한 뒤 비교하였기 때문에 7이 가장 뒤쪽에 있습니다.
cf)
console.log('7' > '3000')
// true
// 문자열 '7'은 문자열 '3000' 보다 큽니다.
// 가장 첫 문자열이 크기 때문입니다.
- 비교함수가 있을 때 동작
: compare 함수는 매개변수로 a, b 를 받는다.
: compare 함수의 리턴값이 0보다 크면 b a 순서로 정렬
: compare 함수의 리턴값이 0보다 작으면 a b 순서로 정렬
: compare 함수의 리턴값이 0이면 원래 순서 대로
const salary = [3000, 5300, 4000, 3600, 7];
const sortedSalary = salary.sort( (a, b) => { return a - b } )
console.log(sortedSalary)
// [7, 3000, 3600, 4000, 5300]
// a - b 라는 비교함수를 넣어주어 실제 숫자의 순서대로 정렬 할 수 있습니다.
console.log('7' - '3000')
// -2993
// 결과와 같이 숫자로 이루어진 문자열을 빼면 숫자로 계산한 뒤 숫자를 리턴합니다.
// 따라서 비교함수로 a - b 를 넣게 되면 오름차순 정렬이 됩니다.