> 웹 프론트엔드 > JS 튜토리얼 > 사용자 정의 'groupBy' 함수를 사용하여 JavaScript 배열의 개체를 효율적으로 그룹화하려면 어떻게 해야 합니까?

사용자 정의 'groupBy' 함수를 사용하여 JavaScript 배열의 개체를 효율적으로 그룹화하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-30 12:02:14
원래의
132명이 탐색했습니다.

How Can I Efficiently Group Objects in JavaScript Arrays Using a Custom `groupBy` Function?

배열의 효과적인 개체 그룹화

배열에는 여러 속성을 가진 복잡한 개체가 포함될 수 있으므로 특정 기준에 따라 이러한 개체를 효율적으로 그룹화해야 합니다. . Underscore.js는 편리한 그룹화 기능을 제공하지만 특정 요구 사항을 충족하지 못할 수 있습니다.

값이 분할되지 않고 병합되는 SQL과 같은 그룹화를 달성하려면 사용자 지정 접근 방식이 선호되는 경우가 많습니다. 이러한 구현 중 하나가 아래에 나와 있습니다.

var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};
로그인 후 복사

이 함수는 배열 xs와 그룹화 키 키를 허용합니다. 배열 요소를 반복하여 결과 개체 rv에 누적합니다. 각 그룹은 키 속성의 값으로 식별됩니다.

시연하려면 다음 개체 배열을 고려하세요.

[ 
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
    // ... (more objects)
]
로그인 후 복사

단계별 그룹화 결과:

console.log(groupBy(array, "Phase"));
// => {
//   "Phase 1": [
//     // Objects in Phase 1
//   ],
//   "Phase 2": [
//     // Objects in Phase 2
//   ]
// }
로그인 후 복사

단계별 그룹화 및 단계 결합 값:

console.log(groupBy(array, "Phase", "Step"));
// => {
//   "Phase 1": {
//     "Step 1": [
//       // Objects in Phase 1, Step 1
//     ],
//     "Step 2": [
//       // Objects in Phase 1, Step 2
//     ]
//   },
//   "Phase 2": {
//     // Similar object structure for Phase 2
//   }
// }
로그인 후 복사

이 접근 방식은 개체를 그룹화하는 유연하고 효율적인 방법을 제공합니다. 배열. 사용자 정의 groupBy 기능을 구현하면 그룹화 논리를 제어할 수 있으며 더 복잡한 시나리오를 처리하도록 쉽게 확장할 수 있습니다.

위 내용은 사용자 정의 'groupBy' 함수를 사용하여 JavaScript 배열의 개체를 효율적으로 그룹화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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