>  Q&A  >  본문

javascript - 비교 함수에 대한 질문

으아악
为情所困为情所困2663일 전840

모든 응답(4)나는 대답할 것이다

  • 过去多啦不再A梦

    过去多啦不再A梦2017-07-05 11:08:44

    특정 데이터 구조를 비교하기 위해 만들어진 도구 기능입니다. 예를 들어 데이터 구조 형식은 다음과 같습니다.

    으아악

    이때 일반적인 sort 메소드는 다음과 같은 형식으로 작성해야 합니다.

    으아악

    이 코드의 문제점:

    1. value 매개변수는 하드 코딩되어 있으므로 다른 필드를 정렬할 때 다시 코딩해야 합니다.

    2. 1 / -1을 반환하는 논리는 중복되고 지루합니다.

    3. Little Red Book 시대에는 정렬을 위해 익명 함수를 직접 작성하는 것이 충분히 가독성이 좋지 않았습니다(이제는 화살표 함수가 있으므로 실제로 큰 문제는 아닙니다).

    그래서 위의 경우에 대해 Red Book의 저자는 [특정 필드 정렬] 기능을 생성하는 일반 도구 기능을 설계했습니다. 이 유틸리티 함수를 호출하면 반환되는 것은 정렬된 결과(고차 함수라고도 함)가 아니라 새 함수입니다.

    이 패키지를 적용한 후의 코드는 다음과 같습니다.

    으아악

    이것은 비즈니스 로직을 단순화합니다.

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 11:08:44

    내가 이해하지 못하는 것은 두 개체의 특정 속성 크기를 비교하면
    createComparisonFunction("test")({'test': 1}, {"test": 2})
    -1

    을 반환한다는 것입니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-07-05 11:08:44

    함수를 호출할 때 두 단계로 살펴보세요. 먼저 createComparisonFunction()传入比较的字段。在createComparisonFunction()函数内,返回一个匿名函数。同时由于匿名函数处在createComparisonFunction()内,所以你对createComparisonFunction()传入的参数propertyName对匿名函数也有效存在。
    通过上一步,你已经得到的匿名函数包含propertyName,此时你就可以传入你要比较的两个对象,在函数内比较他们的propertyName 속성을 통해 비교 결과를 반환합니다.

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-05 11:08:44

    이를 고차 함수라고 합니다.

    회신하다
    0
  • 취소회신하다