JavaScript에 잠시 동안 배열 정렬 함수 정렬이 배열 프로토 타입의 메소드, 즉 Array.Prototype.sort (), Sort (CompressFunction)라는 것을 알아야합니다. 여기서 비교 기능은 비교 함수입니다. Mozilla Mdn의 설명을 살펴 보겠습니다.
비교 기능이 공급되지 않으면 문자열로 변환하고 사전 ( "사전"또는 "전화 번호부,"수치가 아님)의 문자열을 비교하여 요소가 정렬됩니다. 예를 들어, "80"은 사전 순서로 "9"이전에 나오지만 숫자 정렬 9는 80보다 먼저옵니다.
간단한 예는 다음과 같습니다.
코드 사본은 다음과 같습니다.
// 출력 [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// output [ "a", "b", "c"]
console.log ([ "c", "b", "a"]. sort ());
// output [1, 2, "a", "b"]
console.log ([ "b", 2, "a", 1] .sort ());
위의 예에서 알 수 있듯이 기본값은 사전의 알파벳 순서로 정렬됩니다.
다행히도 Sort는 다음 예제와 같이 사용자 정의 비교 함수를 허용합니다.
코드 사본은 다음과 같습니다.
함수 비교 기능 (a, b) {
if (a> b) {
반품 -1;
} else if (a <b) {
반환 1;
}또 다른 {
반환 0;
}
}
// outputs [ "Zuojj", "Benjamin", "1"]
Console.log ([ "Benjamin", "1", "zuojj"]. Sort (CompartInction));
정렬 후, 우리는 또 다른 질문이 있습니다 : 오름차순 및 내림차순 순서를 제어하는 방법은 무엇입니까?
코드 사본은 다음과 같습니다.
함수 비교 기능 (플래그) {
플래그 = 플래그? 플래그 : "ASC";
반환 함수 (a, b) {
if (a> b) {
return flag === "desc"? -1 : 1;
} else if (a <b) {
return flag === "desc"? 1 : -1;
}또 다른 {
반환 0;
}
};
}
// 출력 [ "1", "Benjamin", "Zuojj"]
console.log ([ "Benjamin", "1", "zuojj"]. sort (compressFunction ());
// outputs [ "Zuojj", "Benjamin", "1"]
Console.log ([ "Benjamin", "1", "Zuojj"]. Sort (CompartFunction ( "desc")));
비교 기능의 정렬 규칙은 다음과 같습니다.
1. 음수를 반환하면 A는 배열의 더 낮은 인덱스로 정렬됩니다.
2. 양수를 반환하면 A는 더 높은 인덱스로 정렬됩니다.
3. 반환하면 0 정렬이 필요하지 않습니다.
Mozilla Mdn에서 발췌 한 구절을 살펴 보겠습니다.
정렬 방법의 동작은 JavaScript 1.1과 JavaScript 1.2 사이에서 변경되었습니다. 이 설명을 설명하려면 예를 살펴 보겠습니다.
JavaScript 1.1에서 일부 플랫폼에서는 정렬 메소드가 작동하지 않습니다. 이 방법은 JavaScript 1.2의 모든 플랫폼에서 작동합니다.
JavaScript 1.2 에서이 방법은 더 이상 정의되지 않은 요소를 NULL로 변환하지 않습니다. 대신 배열의 하이 엔드로 분류합니다. 자세한 내용은 여기를 클릭하십시오.
코드 사본은 다음과 같습니다.
var arr = [];
ARR [0] = "개미";
ARR [5] = "Zebra";
// outputs [ "ant", 5 : "zebra"]
Console.log (ARR);
// 출력 6
Console.log (arr.length);
// "ant ****** Zebra"출력
console.log (arr.join ( "*"));
//종류
var sortarr = arr.sort ();
// outputs [ "ant", "zebra"]
Console.log (Sortarr);
// 출력 6
Console.log (Sortarr.Length);
// "ant*zebra ****"출력
console.log (Sortarr.join ( "*"));
이 기사가 정렬 () 방법을 배우고 이해하는 데 도움이되기를 바랍니다. 기사의 부적절한 측면을 비판하고 수정하기를 바랍니다.
참조 링크 : https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort