gpt4 book ai didi

javascript - 根据数组计算对象的求和值并更新为总计

转载 作者:行者123 更新时间:2023-12-01 05:22:11 25 4
gpt4 key购买 nike

我有一个对象,它基本上包含三个重要参数,用于总计算。例如我的对象如下:

[
{'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 参数与 Hours 参数具有相同的值。

我希望它是特定 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 : 01-01-2017 出现两次,Hours 值分别为 8 和 4,因此 TotalHrs 变为 8 +4=12。

此外,我不想分组,我希望结果数组中的元素数量相同,但 TotalHrs 的值更新。

最佳答案

使用 Array.prototype.reduce() 的简短解决方案和 Array.prototype.forEach()功能:

var data = [ {'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} ];

data.forEach(function (o) {
o.TotalHrs = this[o.ResourceId + o.StartDate];
}, data.reduce(function (r, o) {
var k = o.ResourceId + o.StartDate;
(!r[k])? r[k] = o.TotalHrs : r[k] += o.TotalHrs;
return r;
}, {}));

console.log(data);

var k = o.ResourceId + o.StartDate; -k这是一个哈希键字符串,用于对具有相同 ResourceId 的条目进行分组和StartDate属性

关于javascript - 根据数组计算对象的求和值并更新为总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42366106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com