Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript数组中分组、计算和并获得平均值?_Javascript_Arrays_Sum_Average - Fatal编程技术网

如何在JavaScript数组中分组、计算和并获得平均值?

如何在JavaScript数组中分组、计算和并获得平均值?,javascript,arrays,sum,average,Javascript,Arrays,Sum,Average,我有一个对象数组 const用户=[ {组别:'editor',姓名:'Adam',年龄:23}, {组:'admin',姓名:'John',年龄:28}, {组别:'editor',姓名:'William',年龄:34}, {组:'admin',姓名:'Oliver',年龄:28'} ]; 预期结果: //求和 sumAge={ 编者:57//23+34 管理员:56//28+28 } //平均值 平均值={ 编者:28.5,/(23+34)/2 管理员:28//(28+28)/2 } 我

我有一个对象数组

const用户=[
{组别:'editor',姓名:'Adam',年龄:23},
{组:'admin',姓名:'John',年龄:28},
{组别:'editor',姓名:'William',年龄:34},
{组:'admin',姓名:'Oliver',年龄:28'}
];
预期结果:

//求和
sumAge={
编者:57//23+34
管理员:56//28+28
}
//平均值
平均值={
编者:28.5,/(23+34)/2
管理员:28//(28+28)/2
}
我使用
reduce()
方法将数组中的对象按“group”分组并计算总和:

让sumAge=users.reduce((组,年龄)=>{
组[age.group]=(组[age.group]| 0)+age.age | 1;
返回组;
}, {})
console.log('sumAge',sumAge);//sumAge:{编辑:57,管理员:56}
完成!
如何按键“group”对数组对象进行分组并计算平均值?。 我试过:

let ageAvg=users.reduce((组,年龄)=>{
如果(!组[年龄组]){
组[age.group]={…年龄,计数:1}
返回组;
}
组[age.group].age+=age.age;
组[年龄组]。计数+=1;
返回组;
}, {})
const result=Object.keys(ageAvg).map(函数(x){
常数项=平均年龄[x];
返回{
组:item.group,
ageAvg:item.age/item.count,
}
})
console.log('result',result);
/*
结果=[
{集团:“编辑”,平均年龄:28.5}
{集团:“管理”,平均年龄:28}
]
但预期结果是:

结果={
编者:28.5,/(23+34)/2
管理员:28//(28+28)/2
}

您只需使用
reduce
即可获得
年龄组的
总数

并使用
object.keys
length
getAvg
函数中获取作为新对象的合计平均值

演示:

const用户=[{
组:'编辑',
名字:'亚当',
年龄:23
},
{
组:'管理员',
姓名:'约翰',
年龄:28
},
{
组:'编辑',
名字:“威廉”,
年龄:34
},
{
组:'管理员',
名字:“奥利弗”,
年龄:28
}
];
const sumId=users.reduce((a{
集团,,
年龄
})=>(a[组]=(a[组]| | 0)+年龄,a),{});
console.log(sumId)//{编辑:57,管理:56}
//平均值
常量getAvg=(x)=>{
常量项={}
常量计数=Object.keys(x).length
对象.键(x).映射(函数(y){
项目[y]=sumId[y]/计数
})
退货项目
}

console.log(getAvg(sumId))//{编辑:28.5,管理员:28}
对不起,伙计,你算错了。示例:@minhminh I没有计算平均值错误。我完全按照你在报告中的预期输出给出了解决方案。工作:这能回答你的问题吗?