함수를 인수로 전달받거나 함수를 반환하는 함수, 함수형 프로그래밍에 기반을 두고 있다.
sort 메서드는 배열 요소를 정렬할 때 사용
원본 배령를 직접 변경(기본적으로 오름차순 정렬)
const animal = ['dog', 'cat', 'pig'];
animal.sort();
console.log(animal); // [ 'cat', 'dog', 'pig' ] 오름차순으로 정렬
const animal = ['닭', '소', '고양이'];
animal.sort();
console.log(animal); // [ '고양이', '닭', '소' ]
sort는 기본적으로 오름차순으로 정렬되기 때문에 내림차순 정렬하고 싶다면 reverse 메서드 사용
const animal = ['닭', '소', '고양이'];
animal.sort();
animal.reverse();
console.log(animal); // [ '소', '닭', '고양이' ]
숫자 요소로 이루어진 배열
const number = [2, 10, 1, 4, 3];
number.sort();
console.log(number); //[ 1, 10, 2, 3, 4 ]
우리가 예상하는 오름차순 정렬이 나오지 않는다.
이유는 sort메서드의 기본 정렬 순서가 유니코드 코드 포인트의 순서에 따르기 때문이다.
유니코드 코드 포인트는 나중에 따로 정리해야겠다.
어쨌든 숫자 요소를 정렬할 때는 sort메서드에 정렬 순서를 정의하는 비교 함수를 인수로 전달해야 한다.
비교 함수는 양수, 음수 또는 0을 반환하는데 반환값이 0보다 작으면 비교함수의 첫번째 인수를 우선하여 정렬하고
0이면 정렬하지 않고 0보다 크면 두 번째 인수를 우선하여 정렬한다.
오름차순 정렬
const number = [2, 10, 1, 4, 3];
number.sort((a, b) => a - b);
console.log(number); // [ 1, 2, 3, 4, 10 ]
여기서 최대, 최솟값을 구해줄 수 있다.
console.log(number[0],number[number.length-1]);
내림차순 정렬
const number = [2, 10, 1, 4, 3];
number.sort((a, b) => b - a);
console.log(number); // [ 10, 4, 3, 2, 1 ]
객체를 요소로 갖는 배열도 정렬할 수 있다.