>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 배열정렬에 대한 자세한 설명_기본지식

자바스크립트 배열정렬에 대한 자세한 설명_기본지식

WBOY
WBOY원래의
2016-05-16 16:33:111215검색

한동안 JavaScript를 사용했다면 배열 정렬 함수 sort를 알아야 합니다. Sort는 배열 프로토타입의 메서드, 즉 array.prototype.sort(), sort(compareFunction)입니다. 여기서 CompareFunction은 Mozilla MDN의 설명을 살펴보겠습니다.
compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 사전순(숫자가 아닌 "사전" 또는 "전화번호부") 순서로 문자열을 비교하여 정렬됩니다. 예를 들어 "80"은 사전순으로 "9" 앞에 옵니다. 순서가 있지만 숫자 정렬에서는 9가 80 앞에 옵니다.

아래의 몇 가지 간단한 예를 살펴보세요.

코드 복사 코드는 다음과 같습니다.

// 출력 [1, 2, 3]
console.log([3, 2, 1].sort());

// 출력 ["a", "b", "c"]
console.log(["c", "b", "a"].sort());

// 출력 [1, 2, "a", "b"]
console.log(["b", 2, "a", 1].sort());


위 예시에서 볼 수 있듯이 기본적으로 사전에서는 알파벳순으로 정렬되어 있습니다.

다행히도 sort는 다음 예와 같이 사용자 정의 비교 함수를 허용합니다.

코드 복사 코드는 다음과 같습니다.

함수 비교Function(a, b) {
if( a > b) {
반환 -1;
}else if(a < b) {
1을 반환;
}그밖에 {
0을 반환합니다;
}
}
//["zuojj", "Benjamin", "1"] 출력
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction));

정렬 후에 또 다른 질문이 있습니다. 오름차순 및 내림차순을 제어하는 ​​방법은 무엇입니까?

코드 복사 코드는 다음과 같습니다.

함수 비교Function(플래그) {
플래그 = 플래그 ? 플래그: "asc";
반환 함수(a, b) {
if( a > b) {
반환 플래그 === "desc" ? -1 : 1;
}else if(a < b) {
반환 플래그 === "desc" ? 1 : -1;
}그밖에 {
0을 반환합니다;
}
};
}
//["1", "Benjamin", "zuojj"] 출력
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction()));
//["zuojj", "Benjamin", "1"] 출력
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction("desc")));

comparFunction의 정렬 규칙은 다음과 같습니다.
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] = "얼룩말";
//["Ant", 5: "Zebra"] 출력
console.log(arr);
//출력 6
console.log(arr.length);
//"Ant*****Zebra" 출력
console.log(arr.join("*"));
//정렬
var sortArr = arr.sort();
//["Ant", "Zebra"] 출력
console.log(sortArr);
//출력 6
console.log(sortArr.length);
//"Ant*Zebra****" 출력
console.log(sortArr.join("*"));

이 기사가 sort() 메서드를 배우고 이해하는 데 도움이 되기를 바랍니다. 기사에 부적절한 부분이 있으면 비판하고 수정해 주시기 바랍니다.

참조 링크: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

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