객체 배열을 그룹화하는 가장 효율적인 방법
P粉310754094
2023-08-21 14:34:06
<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>
ES6 지도 객체 사용:
지도 정보: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
외부 라이브러리 사용을 피하려면 다음과 같이 간단히 기본 버전을
groupBy()
구현할 수 있습니다.