자바스크립트 - 배열 고차함수 - sort

Jason Moon·2022년 5월 14일
0
post-thumbnail

고차함수

함수를 인수로 전달받거나 함수를 반환하는 함수, 함수형 프로그래밍에 기반을 두고 있다.

Array.prototype.sort

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 ]

객체를 요소로 갖는 배열도 정렬할 수 있다.

📘참고

  • 모던 자바스크립트 Deep Dive

📙추가 공부 필요

  • sort내부의 비교함수 동작 원리
  • 객체를 요소로 갖는 배열 정렬
profile
어려워 보여도 시간을 들여서 해보면 누구나 할 수 있는 일이다

0개의 댓글

관련 채용 정보