Javascript

고차함수 - sort()(숫자)

자라나라나무나무나 2022. 5. 26. 13:44
let nums = [ 1, -1, 4, 0, 10, 20, 12];

console.log(nums.sort());
console.log(nums.reverse());

let ascending_order = function(x,y) {
    return x - y;
};

let descending_order = function(x,y) {
    return y - x;
};

console.log(nums.sort(ascending_order));

console.log(nums.sort(descending_order));

예를들어,

ascending_order 함수에서 20과 12를 비교한다고 가정해보자 함수의 매개변수에 따라 x=20, y=12가 된다.
x - y 는 20 - 12가 되고 결과는 8이 된다. 
8은 0보다 큰 값이기 때문에 순서가 12 20 이렇게 바뀌게 된다.
 
0보다 큰 값이면 자리가 바뀌고
0보다 작은 값이면 숫자의 자리는 변하지 않는다.
 

let ascending_order = function(x, y) {
    if(typeof x === "string") x = x.toUpperCase();
    if(typeof y === "string") y = y.toUpperCase();

    return x > y ? 1 : -1;
};

let descending_order = function(x, y) {
    if(typeof x === "string") x = x.toUpperCase();
    if(typeof y === "string") y = y.toUpperCase();

    return x < y ? 1: -1; 
}

let nums = [ 1, -1, 4, 10, 20, 12]; // case 1
let fruits = ["apple", "Orange", "orange", "melon"]; // case 2

console.log(nums.sort(ascending_order));
console.log(nums.sort(ascending_order));

console.log(fruits.sort(ascending_order));
console.log(fruits.sort(descending_order));