/* 문자열 배열을 오름차순으로 정렬하는 예시
   => 유니코드 코드 포인트를 기준으로 오름차순으로 정렬(alphabetically, 알파벳 순) */
const enStrings = ["d", "b", "c", "a"];
enStrings.sort();

console.log(enStrings); // 출력: ["a", "b", "c", "d"]

/* 한글에서는 가나다 순 */
const koStrings = ["다", "가", "나"];
koStrings.sort();

console.log(koStrings); // 출력: ["가", "나", "다"]

/* 숫자 배열을 오름차순으로 정렬하는 예시
   => 유니코드 코드 포인트를 기준으로 오름차순으로 정렬(alphabetically, 알파벳 순)
   => 문자열처럼 취급하여 오름차순 정렬함 */
const numbers = [1, 4, 10, 31, 1000];
numbers.sort();

console.log(numbers); // 출력: [1, 10, 1000, 31, 4] <= 주의!! 문자열처럼 취급하여 오름차순 정렬함

/* 콜백 함수를 사용해서 숫자 배열을 내림차순으로 정렬하는 예시 */
const reverseNumbers = [1, 3, 2, 4, 5];
reverseNumbers.sort((a, b) => b - a);

console.log(reverseNumbers); // 출력: [5, 4, 3, 2, 1]
arr.sort([compareFunction]);
/**
 * 콜백 함수
 *
 * @param a 비교할 첫 번째 요소입니다.
 * @param b 비교를 위한 두 번째 요소입니다.
 *
 * 콜백 함수는 기명 함수(사용자 정의 함수)나 익명 함수 등으로 사용할 수 있습니다.
 * (당연히) 모든 콜백 함수는 화살표 함수로 사용할 수 있습니다.
 */
compareFunction(a, b) {
    // a와 b를 비교할 로직: 비교 결과를 반환해야 합니다.
}
const numbers = [1, 1000, 10, 31];

function compareNumbers(a, b) {
    return a - b;
}

numbers.sort(compareNumbers);

console.log(numbers); // 출력: [1, 10, 31, 1000]
/* 숫자 배열을 오름차순으로 정렬하는 예시
   => 유니코드 코드 포인트를 기준으로 오름차순으로 정렬(alphabetically, 알파벳 순)
   => 문자열처럼 취급하여 오름차순 정렬함 */
const numbers = [1, 1000, 4, 10, 31];
numbers.sort();

console.log(numbers); // 출력: [1, 10, 1000, 31, 4] <= 주의!! 문자열처럼 취급하여 오름차순 정렬함
const numbers = [1, 1000, 4, 10, 31];

function compareNumbers(a, b) {
    return a - b;
}

numbers.sort(compareNumbers);

console.log(numbers); // 출력: [1, 4, 10, 31, 1000]
const fruits = ["apple", "orange", "banana", "grape"];
fruits.sort();

console.log(fruits); // 출력: ["apple", "banana", "grape", "orange"]
const numbers = [10, 5, 20, 1];

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

console.log(numbers); // 출력: [1, 5, 10, 20]
const numbers = [10, 5, 20, 1];

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

console.log(numbers); // 출력: [20, 10, 5, 1]
const students = [
    {name: "김아름", age: 25},
    {name: "나대로", age: 22},
    {name: "다사랑", age: 30}
];

/* 학생의 나이순으로 정렬 */
students.sort(function(a, b) {
    return a.age - b.age;
});

console.log(students);
// 출력: [{name: "나대로", age: 22}, {name: "김아름", age: 25}, {name: "다사랑", age: 30}]
console.log(["가", "나", , "다"].sort()); // 출력: ["가", "나", "다", 비어 있음]
console.log([, undefined, "가", "나"].sort()); // 출력: ["가", "나", undefined, 비어 있음]

caniuse.com에서 더 자세한 정보를 확인해 보세요.