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