>  Q&A  >  본문

객체 배열을 그룹화하는 가장 효율적인 방법

<p>객체를 배열로 그룹화하는 가장 효율적인 방법은 무엇입니까? </p> <p>예를 들어 다음과 같은 객체 배열이 있다고 가정해 보겠습니다. </p> <pre class="brush:php;toolbar:false;">[ { 단계: "1단계", 단계: "1단계", 작업: "작업 1", 값: "5" }, { 단계: "1단계", 단계: "1단계", 작업: "작업 2", 값: "10" }, { 단계: "1단계", 단계: "2단계", 작업: "작업 1", 값: "15" }, { 단계: "1단계", 단계: "2단계", 작업: "작업 2", 값: "20" }, { 단계: "2단계", 단계: "1단계", 작업: "작업 1", 값: "25" }, { 단계: "2단계", 단계: "1단계", 작업: "작업 2", 값: "30" }, { 단계: "2단계", 단계: "2단계", 작업: "작업 1", 값: "35" }, { 단계: "2단계", 단계: "2단계", 작업: "작업 2", 값: "40" } ]</pre> <p>이 정보를 표에 표시하고 있습니다. 다른 방법으로 그룹화하고 싶지만 값을 합산하고 싶습니다. </p> <p>Underscore.js의 groupby 기능을 사용하고 있습니다. 이 기능은 도움이 되지만 SQL의 group by와 마찬가지로 "분리"하기보다는 "병합"하고 싶기 때문에 요구 사항을 만족시키지 못합니다. 방법. </p> <p>제가 원하는 것은 필요한 경우 특정 값을 합산할 수 있는 것입니다. </p> <p>따라서 <code>Phase</code>별로 그룹화하면 다음을 얻고 싶습니다. </p> <pre class="brush:php;toolbar:false;">[ { 단계: "1단계", 값: 50 }, { 단계: "2단계", 값: 130 } ]</pre> <p><code>Phase</code> / <code>Step</code>별로 그룹화하면 다음을 얻고 싶습니다. </p> <pre class="brush:php;toolbar:false;">[ { 단계: "1단계", 단계: "1단계", 값: 15 }, { 단계: "1단계", 단계: "2단계", 값: 35 }, { 단계: "2단계", 단계: "1단계", 값: 55 }, { 단계: "2단계", 단계: "2단계", 값: 75 } ]</pre> <p>이를 달성하는 데 유용한 스크립트가 있습니까? 아니면 Underscore.js를 계속 사용하고 결과 개체를 반복하여 합계를 계산해야 합니까? </p>
P粉310754094P粉310754094426일 전566

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

  • P粉029327711

    P粉0293277112023-08-22 12:54:13

    ES6 지도 객체 사용:

  • P粉590428357

    P粉5904283572023-08-22 11:08:27

    외부 라이브러리 사용을 피하려면 다음과 같이 간단히 기본 버전을 groupBy() 구현할 수 있습니다.

    으아악

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