JavaScript의 array 타입에는 기본적으로 sort() 라는 함수가 있어서 자동으로 정렬할 때 편하다.

근데 이게 비교함수를 지정하지 않고 기본 sort()만 호출했을 때는 문자열 비교를 한다.

var a = [111, 21, 11, 22];
a.sort();
// 결과는 [11, 111, 21, 22]


숫자정렬을 하려면 비교함수를 지정해줘야 한다.

var a = [111, 21, 11, 22];
// numeric asc
a.sort(function(a, b){ return a-b; });
// [11, 21, 22, 111]

// numeric desc
a.sort(function(a, b){ return b-a; });
// [111, 22, 21, 11]



배열에서 Median 뽑는데 아무래도 값이 이상해서 보니까 기본 sort()가 문자열 정렬이었다는 걸 알고 충격먹음.

역시 기본기가 후달리면 고생함.







Posted by bloodguy
,