본문으로 바로가기

Array.sort

category JavaScript/기초 2020. 10. 22. 18:33

자바스크립트에서 배열을 정렬할 때는 배열 내장 메소드인 sort를 이용하면 쉽다

const arr = [123, 142, 145, 100, 190, 200];

console.log(arr.sort());

정렬이 된 모습

하지만 맨뒤에 35를 추가해 보자

const arr = [123, 142, 145, 100, 190, 200, 35];

console.log(arr.sort());

35가 뒤로간 걸 볼 수 있는데

이는 sort메소드가 정렬을 할 때 숫자로 하는 것이 아닌 묵시적으로 문자열로 변환, 그 후에 유니코드 포인트 코드로 정렬을 하기 때문이다

이렇기 때문에 제대로 정렬된 결과를 보기 위해서는 sort메소드의 인자로 compareFunction이라고 불리는 콜백 함수를 정의해주어야하는데

이때 compareFunction의 반환값에 따라서 정렬 결과가 바뀐다

compareFunction(a, b) 인자로 비교되는 두개의 a, b값을 받는데

반환값이 0보다 작을 경우 : a를 b보다 앞에 배치

반환값이 0보다 작을 경우 : b를 a보다 앞에 배치

반환값이 0일 경우 : 정렬하지않고 다음 요소를 비교

이에 따라서

const arr = [123, 142, 145, 100, 190, 200, 35];

console.log(arr.sort(function (a,b) {
    return a-b;
}));

오름차순

const arr = [123, 142, 145, 100, 190, 200, 35];

console.log(arr.sort(function (a,b) {
    return b-a;
}));

내림차순

으로 정렬된다

'JavaScript > 기초' 카테고리의 다른 글

garbage collector  (0) 2020.10.23
prototype  (0) 2020.10.03
closure  (0) 2020.10.03
호출 스택, 이벤트 루프  (0) 2020.10.02
생성자 함수  (0) 2020.10.01