JavaScript 정렬: 비교 함수에 충분한 부울 값을 반환하지 않나요?
JavaScript에서 배열을 정렬하는 전통적인 방법은 다음과 같습니다. 사용자 정의 비교를 지정할 수 있는 Array.sort() 메서드를 사용하여 function.
질문:
단순히 부울 비교 함수(true/false 반환)를 사용하여 배열을 정렬할 수 있습니까, 아니면 숫자 값을 반환해야 합니까? (예: 1, -1, 0)?
답변:
아니요, 부울을 반환하는 것만으로는 JavaScript의 비교 함수에 충분하지 않습니다. 비교 함수는 비교되는 두 요소 사이의 관계를 나타내는 숫자 값을 반환해야 합니다.
논리:
부울 반환은 한 요소가 다른 요소보다 크거나 작은지 여부만 지정하지만, 요소에 대한 충분한 정보를 제공하지는 않습니다. 어떤 요소가 먼저 오는지 결정하는 정렬 알고리즘입니다. 예를 들어, true를 반환하는 비교 함수는 a가 b보다 단지 큰지 아니면 b보다 훨씬 큰지를 지정하지 않습니다.
잘못된 해결책이 널리 퍼져 있는 이유:
The 부울 값을 반환하는 잘못된 솔루션은 특히 단순한 숫자 배열을 정렬할 때 작동하는 경우가 많기 때문에 널리 퍼져 있습니다. 그러나 더 복잡한 데이터를 정렬하거나 불안정한 정렬 알고리즘(동등한 요소의 순서를 변경)을 사용하는 경우 예상치 못한 결과가 발생할 수 있습니다.
올바른 비교 함수:
배열을 올바르게 정렬하려면 다음 비교 중 하나를 사용하십시오. 기능:
일반 비교 함수:
function(a, b) { if (a > b) return 1; if (a < b) return -1; /* else */ return 0; }
비교 함수 숫자:
function(a, b) { return a - b; }
참고:
위 내용은 부울 비교 함수로 JavaScript 배열을 올바르게 정렬할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!