Javascript 按日期分组并计算JS中的平均值

Javascript 按日期分组并计算JS中的平均值,javascript,arrays,group-by,reduce,Javascript,Arrays,Group By,Reduce,我有一个带有时间戳和一些参数的数据集。看起来是这样的: const resp = [ {date: 1576098000, responseBot: 0.47, responseManager: 2.0}, {date: 1576098000, responseBot: 1.50, responseManager: null}, {date: 1576098000, responseBot: 1.05, responseManager: 2.3}, {date:

我有一个带有时间戳和一些参数的数据集。看起来是这样的:

const resp = [
    {date: 1576098000, responseBot: 0.47, responseManager: 2.0},
    {date: 1576098000, responseBot: 1.50, responseManager: null},
    {date: 1576098000, responseBot: 1.05, responseManager: 2.3},
    {date: 1576108800, responseBot: 1.00, responseManager: 3.3},
    {date: 1576108800, responseBot: 0.60, responseManager: 1.5},
]
...
我需要得到一个分组结果(按日期)并计算平均响应(bot和manager)。预期结果:

[
    {date: 1576098000, responseBotAvg: 1.006, responseManagerAvg: 2.15},
    {date: 1576108800, responseBotAvg: 0.8, responseManagerAvg: 2.4}
]
在纯javascript中实现此结果的最佳方法是什么

第一步是使用
reduce
方法结合
concat
date
键对数组进行分组

然后将
总和
除以元素数,求出
平均值
const resp=[
{日期:1576098000,响应日期:0.47,响应管理员:2.0},
{日期:1576098000,responseBot:1.50,responseManager:null},
{日期:1576098000,响应日期:1.05,响应管理员:2.3},
{日期:1576108800,响应日期:1.00,响应管理员:3.3},
{日期:1576108800,响应日期:0.60,响应管理员:1.5},
]
var结果=相应减少(功能(h,obj){
h[obj.date]=(h[obj.date]| |[])concat(obj);
返回h;
}, {});
结果=对象.键(结果).map(键=>{
返回{
日期:,
responseBotAvg:result[key]。reduce((a,b)=>a+(b.responseBot | | 0),0)/result[key]。长度,
responseManager AVG:result[key]。减少((a,b)=>a+(b.responseManager | | 0),0)/result[key]。映射({responseManager})=>responseManager)。过滤器(布尔)。长度,
}
});
控制台日志(结果)