>  기사  >  웹 프론트엔드  >  Array의 sort 메소드 사용법에 대해 심도 있게 이야기해 보겠습니다. 프로토타입.js_javascript 스킬의 sortBy 메소드에 대한 자세한 검토

Array의 sort 메소드 사용법에 대해 심도 있게 이야기해 보겠습니다. 프로토타입.js_javascript 스킬의 sortBy 메소드에 대한 자세한 검토

WBOY
WBOY원래의
2016-05-16 19:14:551200검색

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 메서드를 사용하여 배열의 가장 큰 요소 방법?
이 기사에서는 배열의 최대값을 얻기 위해 두 가지 방법을 사용합니다.
이제 sort도 이를 보여줄 수 있습니다.

var arr=[2,1, 3, 4];
var minValue=arr.sort()[0];
var maxValue=arr.sort()[arr.length-1] // arr.sort().pop()

이것도 대체 구현 방법입니다.
하지만 이 방법은 수십 또는 수백 개의 요소에 대해 가장 효율적이지 않습니다. 배열의 경우에도 이 기술을 사용할 수 있습니다.
그러나 배열이 매우 큰 경우 sort() 메서드를 사용하면 너무 느려서 짜증이 날 수 있습니다.

sort 정렬 방법에 대해 자세히 논의하세요.
1. 다차원 배열 정렬


var arr=[
                                                 |                                                                                        ("n")) "이제 세 번째 열을 기준으로 정렬하세요. " arr.sort(function(left,right){return left[2]>right[2]?1:-1}).join("n"))
alert("이제 세 번째 열을 거꾸로 기준으로 정렬합니다. down 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;ifunction showName(item ){alert(item.name)}; //이름 인쇄

var arr=[
                                       
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(함수(값, 인덱스) {
3 return {값: 값, 기준: iterator(값, 인덱스)};
4 }).sort(함수(왼쪽, 오른쪽) {
5 var a = left.criteria, b = right.criteria;
6 return a
b 1 : 0
7 }).pluck('value'); 8 },


이 sortBy를 사용하면 함수를 전달하고 배열의 각 요소를 정렬할 수 있으며, 함수를 실행하기 위해 요소를 매개변수로 사용하고, 마지막으로 함수에서 반환된 결과를 정렬합니다.
아래에서 이 함수를 분석하겠습니다.
collect 메서드는 실제로
Array.prototype.map=function(f){
for(var i=0과 동일합니다. ;ret=[];i return ret }

예를 들어, 이제
arr=[2,1,4,3]
iterator=function(x){return x*x}

1-3줄의 코드는 이러한 배열을 얻습니다.
[
{value:2,criteria:4},
{value:1,criteria:1},
{value:4,criteria:16},
{value:3,criteria:9}
]

4-6줄의 코드는 기준에 따라 배열을 정렬합니다. 작은 것부터 정렬하면
[
{value:1,criteria:1},
{value:2,criteria:4},
{value:3,criteria:9},
{value:4,criteria:16}
]

7번째 코드 줄은 각 요소의 값 속성을 취하고 최종적으로 [1,2,3,4를 가져옵니다. ] arr sortBy(function...) 정렬


어쩌면 프로토타입.js의 sortBy에 대해 이야기할 때 어떻게 표현해야 할지 모르겠습니다.
여러분을 힘들게 해서 제가 쓴 설명 코드를 읽느라 고생을 해서 정말 죄송합니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.