Javascript 在reduce函数中执行聚合函数

Javascript 在reduce函数中执行聚合函数,javascript,Javascript,基本上,我想在同一个reduce函数中划分sumOfSquareOfLoadings和itemCount,将它们相加,得到计数。但是我被困在实现中,因为我必须对聚合值进行除法 看来我需要在另一个阵列中执行除法?或者,在聚合其他值的同一个reduce函数中,是否有任何方法可以执行除法 var newArray1=[{ 有限公司:“Cpt”, 标准方:“0.35”, 错误:“0.65” }, { 有限公司:“Cpt”, 标准方:“0.16”, 错误:“0.84” }, { 有限公司:“蚂蚁”, 标

基本上,我想在同一个reduce函数中划分
sumOfSquareOfLoadings
itemCount
,将它们相加,得到计数。但是我被困在实现中,因为我必须对聚合值进行除法

看来我需要在另一个阵列中执行除法?或者,在聚合其他值的同一个reduce函数中,是否有任何方法可以执行除法

var newArray1=[{
有限公司:“Cpt”,
标准方:“0.35”,
错误:“0.65”
},
{
有限公司:“Cpt”,
标准方:“0.16”,
错误:“0.84”
},
{
有限公司:“蚂蚁”,
标准方:“0.21”,
错误:“0.79”
},
{
有限公司:“蚂蚁”,
标准方:“0.79”,
错误:“0.21”
}
];
var计数=新阵列1.减少((r{
有限公司
})=>(r[ltd]=(r[ltd]| | 0)+1,r),{};
var newArray=[];
const result=[…newArray1.reduce((r,o)=>{
康斯特基=o.ltd;
const item=r.get(key)| | Object.assign({},o{
四方浮点数:0,
itemCount:计数[键],
Sumofer错误:0,
阿维:0
});
item.sumOfSquareOfLoadings+=解析浮点数(o.stdSquare);
item.sumOferrors+=parseFloat(o.error);
item.ave=item.sumOfSquareOfLoadings/item.itemCount;
返回r.set(键、项);
},新映射)。值();

控制台日志(结果)您可以直接计算每个reduce的迭代中的项计数,而不是创建一个仅用于计数发生次数的独立数组

const item =
  r.get(key) ||
  Object.assign({}, o, {
    sumOfSquareOfLoadings: 0,
    itemCount: 0,
    sumOferrors: 0,
    ave: 0,
  })

item.itemCount += 1
完整演示

var newArray1=[
{
有限公司:“Cpt”,
标准方:“0.35”,
错误:“0.65”,
},
{
有限公司:“Cpt”,
标准方:“0.16”,
错误:“0.84”,
},
{
有限公司:“蚂蚁”,
标准方:“0.21”,
错误:“0.79”,
},
{
有限公司:“蚂蚁”,
标准方:“0.79”,
错误:“0.21”,
},
]
var newArray=[]
常数结果=[
…纽瓦拉1
.减少((r,o)=>{
康斯特基公司
常数项=
r、 获取(键)||
赋值({},o{
四方浮点数:0,
itemCount:0,
Sumofer错误:0,
大街:0,,
})
item.itemCount+=1
item.sumOfSquareOfLoadings+=parseFloat(o.stdSquare)
item.sumOferrors+=parseFloat(o.error)
item.ave=item.sumOfSquareOfLoadings/item.itemCount
返回r.set(键,项)
},新映射())
.values(),
]

console.log(result)
您的意思是
item.ave=item.sumOfSquareOfLoadings/item.itemCount?如果没有,请添加预期结果。。thanks@Codenewbie是的,我的意思是一样的。谢谢你的回复,只是增加了一点,有没有办法通过添加所有带有密钥的项目来创建一个新数组?结果数组中存在不必要的“stdSquare”和“error”。