뢰

자바스크립트 sort()를 이용한 숫자 정렬

· 2007-11-10 (토) 13:31:11 · 5440
자바스크립트에서 sort는 기본적으로 아스키값을 기준으로 정렬합니다.

그래서 2보다 10이 앞에 오죠.


숫자 정렬되게 sort용 함수를 만들어봤습니다.

# 음수는 -가 제일 앞에 와야 제대로 정렬합니다.
뒤에 붙으면 문자로서의 -와 기능적으로 구분하기가 거의 불가능하므로 그냥 문자 취급합니다.


function sort2(a,b)
{
    if(parseInt(a) > parseInt(b)) return 1;
    else if(parseInt(a) < parseInt(b)) return -1;
    else
    {
        var sort = new Array(a,b);
        sort.sort();
        return (sort[0] == a)?-1:1;
    }
}

간단하게 했지만, 문자 뒤에 오는 숫자는 역시 제대로 정렬되지 않습니다.

아래는 문자 뒤의 숫자도 정렬하게 만든 것.


function sort(a,b)
{
    aS = a.toString(10).toUpperCase();
    bS = b.toString(10).toUpperCase();
    if(aS == bS) return 0;

    while(aS || bS)
    {
        aS = aS.replace(/^((\-?\d*)[^\d]*)/,"");
        aT = RegExp.$1;
        aN = RegExp.$2;

        bS = bS.replace(/^((\-?\d*)[^\d]*)/,"");
        bT = RegExp.$1;
        bN = RegExp.$2;
    
        if(aN && bN && aN != bN) return Number(aN)>Number(bN)?1:-1;
        else if(aT != bT)
        {
            var sort = new Array(aT,bT);
            sort.sort();
            return (sort[0] == aT)?-1:1;
        }
    }
}

덧붙여서 대소문자 구분하지 않고 정렬합니다.
[이 게시물은 관리자님에 의해 2011-10-31 16:57:14 JavaScript에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
11-08-16 조회 2,403
11-08-16 조회 2,380
11-08-12 조회 2,213
11-08-02 조회 2,796
11-07-27 조회 2,182
11-07-25 조회 2,313
11-06-28 조회 2,473
11-06-06 조회 3,982
11-06-04 조회 2,575
11-04-25 조회 6,160
11-04-22 조회 2,662
11-04-21 조회 2,880
11-04-08 조회 3,249
11-03-31 조회 2,806
11-03-20 조회 3,227
11-03-10 조회 2,849
11-03-04 조회 3,175
11-03-03 조회 2,900
11-02-26 조회 4,323
11-02-14 조회 5,676
11-02-08 조회 3,284
11-01-30 조회 5,380
11-01-14 조회 5,163
11-01-14 조회 3,719
11-01-14 조회 2,878
11-01-14 조회 2,915
11-01-14 조회 3,062
11-01-12 조회 2,819
11-01-07 조회 4,495
10-12-29 조회 2,445
10-12-22 조회 2,465
10-12-05 조회 5,838
10-11-22 조회 5,218
10-11-13 조회 3,588
10-10-27 조회 3,206
10-10-21 조회 2,903
10-09-21 조회 2,911
10-09-17 조회 2,949
10-09-15 조회 3,397
10-09-14 조회 4,006
10-05-18 조회 2,878
10-02-17 조회 4,311
10-02-12 조회 3,083
09-12-14 조회 5,136
09-12-14 조회 6,016
09-09-19 조회 4,379
09-08-16 조회 6,226
09-07-22 조회 5,632
09-04-13 조회 3,043
09-03-15 조회 5,048
09-03-05 조회 3,875
09-02-09 조회 2,822
08-12-30 조회 3,016
08-12-06 조회 3,217
08-11-30 조회 3,559
08-10-18 조회 4,394
08-10-08 조회 3,735
08-09-19 조회 4,340
08-09-05 조회 2,981
08-09-05 조회 5,089
08-09-05 조회 2,969
08-09-05 조회 3,562
08-09-05 조회 3,477
08-09-01 조회 4,497
08-08-07 조회 2,748
08-06-08 조회 3,219
08-06-02 조회 2,810
08-05-26 조회 5,236
08-05-09 조회 4,303
08-04-22 조회 3,890
08-04-17 조회 4,481
08-04-17 조회 5,560
08-04-17 조회 3,700
08-04-17 조회 8,678
08-04-17 조회 4,589
08-04-17 조회 4,491
08-04-09 조회 3,049
08-03-31 조회 3,547
08-03-26 조회 3,240
08-03-25 조회 3,530
08-03-25 조회 3,958
08-03-25 조회 4,005
08-03-25 조회 3,665
08-03-25 조회 3,558
08-03-25 조회 3,559
08-03-25 조회 5,247
08-02-03 조회 5,280
08-01-18 조회 6,619
08-01-17 조회 3,916
08-01-17 조회 3,734
08-01-12 조회 4,022
08-01-08 조회 3,351
07-12-28 조회 4,618
07-12-04 조회 3,490
07-11-30 조회 5,101
07-11-30 조회 5,715
07-11-02 조회 4,011
07-10-24 조회 3,988
07-10-24 조회 3,266
07-10-24 조회 3,372