sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다. 구문은 다음과 같습니다.
arrayObject.sort(sortby)
반환 값은 배열에 대한 참조입니다. 배열은 원래 배열에 따라 정렬되며 복사본이 만들어지지 않습니다.
이 메서드를 매개 변수 없이 호출하면 배열의 요소가 알파벳순, 더 정확하게는 문자 인코딩 순서로 정렬됩니다. 이를 달성하려면 먼저 비교를 위해 배열 요소를 문자열(필요한 경우)로 변환합니다.
다른 기준으로 정렬하려면 두 값을 비교하고 두 값의 상대적 순서를 설명하는 숫자를 반환하는 비교 함수를 제공해야 합니다. 비교 함수에는 두 개의 매개변수 a와 b가 있어야 하며 반환 값은 다음과 같습니다.
a가 b보다 작으면 정렬된 배열에서 a가 b 앞에 나타나야 하고 0보다 작은 값을 반환합니다.
a가 b와 같으면 0을 반환합니다.
a가 b보다 크면 0보다 큰 값을 반환합니다.
function NumAscSort(a,b) { return a - b; } function NumDescSort(a,b) { return b - a; } var arr = new Array( 3600, 5010, 10100, 801); arr.sort(NumDescSort); alert(arr); arr.sort(NumAscSort); alert(arr);
sort(fun)은 두 숫자의 크기를 비교하는 정렬 기능을 허용합니다. 실제로 객체 배열 정렬의 원리는 동일합니다.
숫자의 크기를 비교하지 않는 경우 다음과 같이 할 수 있습니다.
var myarray=["Apple", "Banana", "Orange"] myarray.sort()
배열이 직접 sort()를 호출한 후 배열은 배열의 요소를 알파벳 순서로 정렬합니다. 정렬할 문자 인코딩 순서입니다.
객체 배열 정렬을 위해 먼저 비교 함수를 구성하는 함수를 작성합니다.
//by函数接受一个成员名字符串做为参数 //并返回一个可以用来对包含该成员的对象数组进行排序的比较函数 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 ("error"); } } }
정렬할 배열:
var employees=[] employees[0]={name:"George", age:32, retiredate:"March 12, 2014"} employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"} employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"} employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
함수 직접 호출:
employees.sort(by("age"));
여기, 객체 배열 정렬은 기본적으로 이루어집니다. 그렇다면 다중 키 값 정렬을 구현하는 방법은 무엇입니까? 즉, 나이를 먼저 정렬하고, 나이가 같으면 이름을 비교한다는 의미입니다.
이제 두 번째 매개변수를 허용할 수 있도록 by 함수를 추가로 수정할 수 있습니다. 주요 키 값이 일치하는 항목을 생성하면 승자를 결정하기 위해 또 다른 비교 메서드가 호출됩니다.
//by函数接受一个成员名字符串和一个可选的次要比较函数做为参数 //并返回一个可以用来包含该成员的对象数组进行排序的比较函数 //当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下 var by = function(name,minor){ return function(o,p){ var a,b; if(o && p && typeof o === 'object' && typeof p ==='object'){ a = o[name]; b = p[name]; if(a === b){ return typeof minor === 'function' ? minor(o,p):0; } if(typeof a === typeof b){ return a < b ? -1:1; } return typeof a < typeof b ? -1 : 1; }else{ thro("error"); } } } employees.sort(by('age',by('name')));
자, 이제 안심하고 사용하실 수 있습니다. 이해가 되지 않으면 by 함수를 애플리케이션에 직접 복사하고 직접 호출할 수 있습니다.
위 내용은 JavaScript가 sort() 메서드를 사용하여 다차원 배열과 객체 배열을 정렬하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!