私は合計計算に必要な基本的に3つの重要なパラメータを持つオブジェクトを持っています。 だから例えば私のオブジェクトは以下の通りです:配列に基づいてオブジェクトから集計値を計算し、合計で同じに更新する
[
{'Id':1,'ResourceId':1,'StartDate':'01-01-2017','Hours':8,'TotalHrs':8},
{'Id':2,'ResourceId':1,'StartDate':'01-01-2017','Hours':4,'TotalHrs':4},
{'Id':3,'ResourceId':1,'StartDate':'01-03-2017','Hours':4,'TotalHrs':4},
{'Id':4,'ResourceId':1,'StartDate':'01-03-2017','Hours':4,'TotalHrs':4},
{'Id':5,'ResourceId':2,'StartDate':'01-01-2017','Hours':2,'TotalHrs':2},
{'Id':6,'ResourceId':2,'StartDate':'01-01-2017','Hours':4,'TotalHrs':4},
{'Id':7,'ResourceId':2,'StartDate':'01-03-2017','Hours':2,'TotalHrs':2},
]
ので、現在TotalHrsパラメータは、時間パラメータの値と同じです。
私はそれが特定のResourceIdとStartdateの合計であることを望みます。 すなわち、配列内にResourceIdとStartdateが一致する場合、TotalHrsパラメータはHoursパラメータの値の合計である必要があります。
最終的な配列になります。したがって、上記の例では
[
{'Id':1,'ResourceId':1,'StartDate':'01-01-2017','Hours':8,'TotalHrs':12},
{'Id':2,'ResourceId':1,'StartDate':'01-01-2017','Hours':4,'TotalHrs':12},
{'Id':3,'ResourceId':1,'StartDate':'01-03-2017','Hours':4,'TotalHrs':8},
{'Id':4,'ResourceId':1,'StartDate':'01-03-2017','Hours':4,'TotalHrs':8},
{'Id':5,'ResourceId':2,'StartDate':'01-01-2017','Hours':2,'TotalHrs':6},
{'Id':6,'ResourceId':2,'StartDate':'01-01-2017','Hours':4,'TotalHrs':6},
{'Id':7,'ResourceId':2,'StartDate':'01-03-2017','Hours':2,'TotalHrs':2},
]
、ResourceId
:1とStartDate
:2017年1月1日に8,4時間程度の値を持つ2つのオカレンスがあるので、そこTotalHrsは8 + 4 = 12となります。
また、私は結果の配列ではなくTotalHrs
のための更新された値と同じ数の要素をしたい、して、グループにしたくありません。 Array.prototype.reduce()とArray.prototype.forEach()機能使用
値01-01-2017'' [オブジェクトのjavascript配列にGROUPBYするための最も効率的な方法は何ですか?]の – RomanPerekhrest
可能な重複は無効です(http://stackoverflow.com/questions/14446511/what-is-the-most-efficient-method-to-groupby-on-a-javascript-array-of-objects) – George
@RomanPerekhrest、日付形式ではない正確には、そのString.Iは、アプリケーションのためにこの方法を使用する必要があります。 – Mukta