> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 여러 필드를 기준으로 개체 배열을 정렬하려면 어떻게 해야 합니까?

JavaScript에서 여러 필드를 기준으로 개체 배열을 정렬하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-17 05:53:24
원래의
360명이 탐색했습니다.

How Can I Sort an Array of Objects by Multiple Fields in JavaScript?

여러 필드로 개체 배열 정렬

원래 질문에서는 단일 필드로 개체 배열을 정렬하는 것이 효율적으로 해결되었습니다. 하지만 여러 필드에 정렬을 어떻게 적용할 수 있나요?

객체 배열을 여러 필드로 정렬하려면 체인 정렬 방식을 사용할 수 있습니다. 여기에는 첫 번째 필드를 기준으로 정렬한 다음 값이 같을 경우 두 번째 필드를 기준으로 계속 정렬하는 작업이 포함됩니다. 필요한 경우 더 많은 필드에 대해 이 프로세스를 반복할 수 있습니다.

도시별로 주택 배열을 정렬(오름차순)한 다음 가격(내림차순)으로 정렬하려는 다음 예를 고려해 보세요.

var homes = [
    {"h_id":"3",
     "city":"Dallas",
     "state":"TX",
     "zip":"75201",
     "price":"162500"},
    {"h_id":"4",
     "city":"Bevery Hills",
     "state":"CA",
     "zip":"90210",
     "price":"319250"},
    {"h_id":"6",
     "city":"Dallas",
     "state":"TX",
     "zip":"75000",
     "price":"556699"},
    {"h_id":"5",
     "city":"New York",
     "state":"NY",
     "zip":"00010",
     "price":"962500"}
    ];
로그인 후 복사

이 배열을 정렬하려면 다음 JavaScript 코드를 사용할 수 있습니다.

homes.sort(function (a, b) {
    return a.city.localeCompare(b.city) || b.price - a.price;
});
로그인 후 복사

이 코드는 다음과 같습니다. 작동:

  1. 정렬 함수는 비교 함수를 인수로 사용합니다. 이 함수는 배열의 두 요소를 비교합니다.
  2. 비교 함수에서는 먼저 두 집의 도시를 비교합니다. 동일하면 가격을 비교합니다.
  3. localeCompare 함수는 두 문자열을 비교하고 브라우저의 로케일을 고려합니다. 이렇게 하면 다양한 로케일에서 정렬이 일관되게 이루어집니다.
  4. || 연산자는 논리적 OR 연산을 수행하는 데 사용됩니다. 도시 비교에서 0이 아닌 값이 반환되면 두 주택의 도시가 서로 다르므로 도시 비교를 정렬에 사용해야 함을 의미합니다. 그렇지 않으면 가격 비교가 사용됩니다.
  5. 가격 비교에서 음수 값이 반환되면 첫 번째 집의 가격이 두 번째 집보다 낮다는 의미입니다. 양수 값이 반환되면 첫 번째 주택의 가격이 두 번째 주택보다 높은 것입니다. 정렬 알고리즘은 이 값을 사용하여 집의 순서를 결정합니다.

이 정렬 접근 방식을 여러 필드에 적용하면 복잡한 객체 배열을 원하는 순서로 쉽게 정렬할 수 있습니다.

위 내용은 JavaScript에서 여러 필드를 기준으로 개체 배열을 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿