Javascript 分组并对另一个阵列执行多重操作,然后推送到新阵列

Javascript 分组并对另一个阵列执行多重操作,然后推送到新阵列,javascript,Javascript,我想通过对另一个对象数组的值执行多个操作,通过使用一些键进行分组,将一个值推送到一个新数组中 我将数组设置为: var newArray = [{ltd: "Cpt", stdSquare: "0.35", error: "0.65"}, {ltd: "Cpt", stdSquare: "0.16", error: "0.84"}, {ltd: "Ant"

我想通过对另一个对象数组的值执行多个操作,通过使用一些
键进行分组,将一个值推送到一个新数组中

我将数组设置为:

var newArray = [{ltd: "Cpt", stdSquare: "0.35", error: "0.65"},
 {ltd: "Cpt", stdSquare: "0.16", error: "0.84"},
 {ltd: "Ant", stdSquare: "0.21", error: "0.79"},
 {ltd: "Ant", stdSquare: "0.79", error: "0.21"}];
在下面的函数中,我想对
stdSquare
的值求和,并通过与
ltd
分组,推送到
results
数组

但这给了我一个错误:

未捕获类型错误:map.get不是函数

期望输出:

[
  {ltd:"Cpt", sumOfstdSquare: 0.51},
  {ltd:"Ant", sumOfstdSquare: 1.00}
]

如果我理解正确,您希望:

  • 所有标准平方和
  • 集团有限公司
以下是示例:
在这个答案中,我不修改原点,而是创建一个新数组
grouped

如果要使原点指向结果,请使用
newArray=[…groupd]

var newArray=[
{ltd:“Cpt”,标准方:“0.35”,错误:“0.65”},
{ltd:“Cpt”,标准方:“0.16”,错误:“0.84”},
{ltd:“Ant”,标准方:“0.21”,错误:“0.79”},
{ltd:“Ant”,标准方:“0.79”,错误:“0.21}];
const group=newArray.reduce((ret,val)=>{
康斯特有限公司=瓦尔有限公司
const index=ret.findIndex(item=>item.ltd==ltd)
如果(索引==-1){
return[…ret,{ltd:val.ltd,stdSquare:parseFloat(val.stdSquare)}]
}
否则{
const newItem={ltd:val.ltd,stdSquare:parseFloat(val.stdSquare)+ret[index].stdSquare};
重新拼接(索引,1,新项目)
回程网
}
},
[])

console.log(分组)
似乎错误地使用了reduce
map.get不是一个函数
,因为您在reduce函数中返回
results
,reduce函数是一个数组而不是一个映射,没有
。get
方法这似乎不起作用,它只是打印输入上的内容……我想用
ltd
对结果进行分组,在一个数组中。我想我错过了一些东西。。该代码返回一个组映射和一个和。你能添加你想要的输出吗?我已经用想要的输出修改了我的帖子,以显示示例,但是我可以从简化的函数返回任意数量的项。
[
  {ltd:"Cpt", sumOfstdSquare: 0.51},
  {ltd:"Ant", sumOfstdSquare: 1.00}
]