>웹 프론트엔드 >JS 튜토리얼 >부울 비교 함수로 JavaScript 배열을 올바르게 정렬할 수 있나요?

부울 비교 함수로 JavaScript 배열을 올바르게 정렬할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-18 00:12:13939검색

Can a Boolean Comparison Function Properly Sort a JavaScript Array?

JavaScript 정렬: 비교 함수에 충분한 부울 값을 반환하지 않나요?

JavaScript에서 배열을 정렬하는 전통적인 방법은 다음과 같습니다. 사용자 정의 비교를 지정할 수 있는 Array.sort() 메서드를 사용하여 function.

질문:

단순히 부울 비교 함수(true/false 반환)를 사용하여 배열을 정렬할 수 있습니까, 아니면 숫자 값을 반환해야 합니까? (예: 1, -1, 0)?

답변:

아니요, 부울을 반환하는 것만으로는 JavaScript의 비교 함수에 충분하지 않습니다. 비교 함수는 비교되는 두 요소 사이의 관계를 나타내는 숫자 값을 반환해야 합니다.

  • a가 b보다 큰 경우 1
  • a가 b보다 작은 경우 -1
  • a가 다음과 같으면 0입니다. b

논리:

부울 반환은 한 요소가 다른 요소보다 크거나 작은지 여부만 지정하지만, 요소에 대한 충분한 정보를 제공하지는 않습니다. 어떤 요소가 먼저 오는지 결정하는 정렬 알고리즘입니다. 예를 들어, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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