출처 : 


자바스크립트 핵심 가이드

저자
더글라스 크락포드 지음
출판사
한빛미디어 | 2008-09-30 출간
카테고리
컴퓨터/IT
책소개
자바스크립트 전문가 더글라스 크락포드가 정리해낸 자바스크립트 언...
가격비교 글쓴이 평점  

이 책에 나온 예문을 그대로... 사용..! 두둥.


var tempArray = new Array();

tempArray.push({id: 1, name: 'a'});

tempArray.push({id: 4, name: 'd'});

tempArray.push({id: 2, name: 'b'});

tempArray.push({id: 3, name: 'c'});

tempArray.push({id: 5, name: 'e'});



var by = function(name) {

    return function(o, p) {

        var a, b;

        if (typeof o === 'object' && typeof p === 'object' && o && p) {

            a = o[name];

            b = p[name];


            if (a === b) {

                return 0;

            }

            if (typeof a === typeof b) {

                return a < b ? -1 : 1;

            }

            return typeof a < typeof b ? -1 : 1;

        } else {

            throw {

                name : 'Error',

                message : 'Expected an object when sorting by ' + name

            };

        }

    };

};


tempArray.sort(by('id'));

결과확인
[Object { id=1, name="a"}, Object { id=2, name="b"}, Object { id=3, name="c"}, Object { id=4, name="d"}, Object { id=5, name="e"}]


IP주소 문자열을 가지는 목록 List<String> ipList 내부에 있는 IP주소를  정렬하는 방법

사용하는 클래스 java.util.Collections(class), java.util.Comparator(Interface)

정렬하는데 사용식 : 

Collections.sort(ipList, new IpListSortByIp());


IpListSortByIp.java

public class IpListSortByIp implements Comparator<String> {

        @Override
        public int compare(String o1, String o2) {
            try {
                if (InetAddress.getByName(o1).hashCode() > InetAddress.getByName(o2).hashCode()) {
                    return 1;
                } else if (InetAddress.getByName(o1).hashCode() < InetAddress.getByName(o2).hashCode()) {
                    return -1;
                }
            }
            catch (UnknownHostException e) {
                //Exception 처리
            }
            return 0;
        }
    }


간단히 정의를 한다면,

문자열 IP주소를 java.net.InetAddress 객체로 변형하여 그 객체가 가지고 있는 HashCode를 비교하여 정렬하는 방식이다. 

JavaScript sort 참고 : http://www.w3schools.com/jsref/jsref_sort.asp
  
var testArray = [
    {"id" : 1, "total" : 3}, {"id" : 2, "total" : 20}, {"id" : 3, "total" : 12}, {"id" : 4, "total" : 9}, {"id" : 3, "total" : 24}
];
function custonSort(a, b) {
  if(a.total == b.total){ return 0} return  a.total > b.total ? 1 : -1;
}
testArray.sort(custonSort);
console.log(testArray);
<< 정렬 결과 >>
[
Object
  1. id1
  2. total3
  3. __proto__Object
,
Object
  1. id4
  2. total9
  3. __proto__Object
,
Object
  1. id3
  2. total12
  3. __proto__Object
,
Object
  1. id2
  2. total20
  3. __proto__Object
,
Object
  1. id3
  2. total24
  3. __proto__Object
]

간단하게 예제를 만들어봤다.


난 전혀 다른 곳을 파고 있었던 것이다. 


+ Recent posts