자바스크립트에서는 기본적으로 배열을 정렬하는 기능을 지원하고 있다.
//정렬할 배열 var test = [3, 9, 1, 8]; //배열 정렬 test.sort(); //결과값 [1, 3, 8, 9]
위와 같이 단순한 배열일 경우, 특별한 조작없이 .sort() 메서드를 호출하는 것만으로도 배열 내부가 정렬된다.
배열안에는 자동으로 정렬된 순서로 저장된다.
하지만, 객체로 이루어진 배열은 위와 같이 단순하게 .sort() 메서드를 호출하는 것만으로는 정렬이 되지 않는다.
아래의 예제를 한줄한줄 살펴보면, 객체 내부의 배열 정렬을 정렬하는 방법에 대해 쉽게 이해할 수 있을 것이다.
//정렬할 객체 배열 var test = { id: "test", name: "test", children: [ { name: "3번", seq: 3 }, { name: "7번", seq: 7 }, { name: "1번", seq: 1 }, { name: "4번", seq: 4 } ] }; //현재 객체 배열을 정렬 test.children.sort(function (a, b) { return a.seq < b.seq ? -1 : a.seq > b.seq ? 1 : 0; }); //결과값 { id: "test", name: "test", children: [ { name: "1번", seq: 1 }, { name: "3번", seq: 3 }, { name: "4번", seq: 4 }, { name: "7번", seq: 7 } ] }
.sort() 메서드 안에 함수를 파라메터로 넣어서 해당 함수에서 1, -1, 0을 리턴하여 순서를 정해주는 방식이다.
마찬가지로 객체 내부에는 정렬된 순서로 변경된다.