Design & Development

javascript array sort()

jQuery Recipes 책 보다가 sort() 문제 있길래 회사 동료들에게 잠깐 머리 식히는 퀴즈로 냈던거 정리해봤습니다.

숫자를 정렬하려고 하는데 다음과 같이 해서는 … 당연히 안됩니다. 어찌하면 될까요?

var members = [45, 10, 3, 22, 7];
members = members.sort();
console.log(members);

array.sort() 는 아스키 값으로 정렬하기 때문에 원하는 숫자 정렬 결과를 얻을 수 없습니다. 그래서 array.sort(compareFunction) 를 이용해서 처리를 해주어야 합니다 closure 를 이용해서 다음과 같이 하면 되겠죠.

var members = [45, 10, 3, 22, 7];
members = members.sort(function(a, b) {
    return a-b;
});

그런데 a-b 했을 때 내부적으로 어떻게 정렬 처리될까요?
console.log(a, ” – “, b, ” : “, a-b);
찍어본 결과로 대충 추정해보면 이렇게 진행될 것 같습니다.

45 – 10 : 10, 45
45 – 3 : 10, 3, 45
10 – 3 : 3, 10, 45
45 – 22 : 3, 10, 22, 45
10 – 22 : 3, 10, 22, 45
45 – 7 : 3, 10, 22, 7, 45
3 – 7 : 3, 10, 22, 7, 45
10 – 7 : 3, 7, 10, 22, 45

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s