Array.prototype.sort 메소드는 배열을 정렬하는 것입니다. 이 메소드는 정렬 규칙을 지정하는 함수 매개변수를 사용합니다.
먼저 정렬의 간단한 적용을 살펴보겠습니다.
var arr=[2,1,3,4];
Alert(arr.sort()) // [1,2,3,4] 작은 것부터 큰 것까지 정렬
// 이제 큰 것부터 작은 것 순으로 정렬하여 [4,3,2,1]을 얻습니다.
Alert(arr.sort(function(left,right){return left>right?-1:1}))
//여기서 sort 메소드는 매개변수 함수의 반환값 1 또는 -1을 사용하여 정렬 여부를 결정합니다. 순서 또는 역순으로
배열에서 가장 큰 요소를 가져오기 위해 Function.apply 메서드를 사용하는 방법에 대해 이전에 말한 것을 기억하십니까?
이 기사에서는 배열의 최대값을 얻기 위해 두 가지 다른 방법을 사용합니다.
이제 정렬도 과시할 수 있습니다.
var arr=[2,1,3,4];
var minValue=arr.sort()[0];
var maxValue=arr.sort()[arr.length-1] // arr.sort().pop() 은 어떻습니까
? 이것은 또한 루프 순회를 작성할 필요가 없습니다.
그러나 이 방법은 수십 또는 수백 개의 요소가 있는 배열에 대해 여전히 이 기술을 사용할 수 있다는 점을 지적해야 합니다.
그러나 배열이 매우 큰 경우 sort() 메서드를 사용하는 것은 너무 느려서
sort sort 복잡한 데이터 구조에 대해 더 자세히 논의하고 싶을 수 있습니다.
1. 다차원 배열 정렬
var arr=[
[2,1,55,4],
[5,3,22,3],
[1,2,77,2],
[9,4,33,5],
];
Alert("첫 번째 열을 기준으로 기본 정렬n"+arr.sort().join("n"))
Alert("이제 세 번째 열을 기준으로 정렬n"+arr.sort(function(left,right){return left[2]>right[2]?1:-1}).join("n"))
Alert("이제 세 번째 열을 기준으로 역순으로 정렬합니다.n"+arr.sort(function(left,right){return left[2]>right[2]?-1:1}).join("n ") )
2. 복잡한 데이터 구조 정렬
Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}
function showName(item){alert(item.name)}; //이름 출력
var arr=[
{이름:"청구서",돈:500},
{이름:"go_rush",돈:400},
{이름:"dudu",돈:9000}
];
//dudu, bill, go_rush를 순서대로 표시합니다. dudu가 가장 부유하고 제가 가장 가난한 것 같습니다.
arr.sort(function(left,right){return left.money>right.money?-1:1}).each(showName)
3. 테이블을 정렬하면서 어제 모두와 이 주제에 대해 이야기를 나눴습니다.
참조:
http://www.cnblogs.com/ashun/archive/2006/11/30/appendChild_table_sort.html
더 복잡한 테이블 정렬(또한 Array의 정렬 기능 사용):
http://community.csdn.net/expert/Topicview2.asp?id=5174915
4. Protype.js에는 매우 영리한 정렬 확장 기능이 있습니다. 먼저 코드를 살펴보겠습니다.
1 sortBy: function(iterator) {
2 return this.collect(function(value, index) {
3 return {값: 값, 기준: iterator(값, 인덱스)};
4 }).sort(함수(왼쪽, 오른쪽) {
5 var a = 왼쪽.기준, b = 오른쪽.기준;
6 반환 a < b ? -1: a > b ?
7 }).pluck('값');
8},
이 sortBy를 사용하면 함수를 전달하고, 배열의 각 요소를 매개변수로 사용하여 함수를 실행하고, 마지막으로 함수에서 반환된 결과를 정렬할 수 있습니다.
아래에서 그의 기능을 분석해 보겠습니다.
Collect 메소드는 실제로 map 메소드와 동일합니다.
Array.prototype.map=function(f){
for(var i=0;ret=[];i<this.length;i++) ret[i]=f(this[i],i,this)
반납하다
}
예를 들어, 이제
도착=[2,1,4,3]
iterator=function(x){return x*x}
1~3줄의 코드로 이러한 배열을 얻을 수 있습니다.
[
{값:2,기준:4},
{값:1,기준:1},
{값:4,기준:16},
{값:3,기준:9}
]
4-6줄의 코드는 기준에 따라 배열을 정렬합니다. 정렬 후에는 다음과 같은 결과를 얻습니다.
[
{값:1,기준:1},
{값:2,기준:4},
{값:3,기준:9},
{값:4,기준:16}
]
코드의 7번째 줄은 각 요소의 value 속성을 취하고 마지막으로 arr 정렬을 위한 sortBy(function...)을 구현하기 위해 [1,2,3,4]를 가져옵니다.
어쩌면 내 언어 표현 능력이 제한되어 있을 수도 있습니다. 프로토타입.js에서 sortBy에 관해 이야기할 때 어떻게 말로 표현해야 할지 모르겠습니다.
제가 작성한 설명코드를 읽으시느라 다들 고생하셨어요.
http://www.cnblogs.com/ashun/archive/2006/12/01/sort_sortby_array_prototype.html
!