Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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_Reactjs_Sum - Fatal编程技术网

在同一数组中组合来自不同对象的值-javascript

在同一数组中组合来自不同对象的值-javascript,javascript,arrays,reactjs,sum,Javascript,Arrays,Reactjs,Sum,我有一个如下所示的数组: array = [{game: 1, team: aName, score: 10 },{game: 1, team: bName, score: 1}, {game: 2, team: aName, score: 20}, {game:2, team: bName, score: 30}] sumArray = [{team:aName, score: 30},{team:bName, score:31}] 我需要一种方法来汇总不同团队的所有得分,因此我得到如下结

我有一个如下所示的数组:

array = [{game: 1, team: aName, score: 10 },{game: 1, team: bName, score: 1}, {game: 2, team: aName, score: 20}, {game:2, team: bName, score: 30}]
sumArray = [{team:aName, score: 30},{team:bName, score:31}]
我需要一种方法来汇总不同团队的所有得分,因此我得到如下结果:

array = [{game: 1, team: aName, score: 10 },{game: 1, team: bName, score: 1}, {game: 2, team: aName, score: 20}, {game:2, team: bName, score: 30}]
sumArray = [{team:aName, score: 30},{team:bName, score:31}]
有没有一种方法可以通过JS实现这一点

谢谢

这就是你想要的

const数组=[
{比赛:1,球队:'阿纳姆',得分:10},
{游戏:1,团队:'bName',得分:1},
{第2场,球队:'阿纳姆',比分:20},
{第2场,球队:'bName',得分:30}
]
console.log([…array.reduce((a,c)=>{
如果(a.has(c.team)){
a、 获得(c.团队)。得分+=c.得分;
}否则{
a、 set(c.team,c);
}
返回a;
},new Map())。values())
是的,有

array=[{游戏:1,团队:'aName',得分:10},{游戏:1,团队:'bName',得分:1},{游戏:2,团队:'aName',得分:20},{游戏:2,团队:'bName',得分:30}];
sumArray=数组
.map(e=>e.team)//映射团队
.filter((v,i,s)=>s.indexOf(v)==i)//仅获取唯一的团队
.map(t=>({team:t,score:array.filter(e=>e.team==t).reduce((p,v=>p+v.score,0)}));//为每个团队生成精简对象

log(sumArray)使用reduce函数收集分数

const数据=[{
游戏:1,
团队:“aName”,
分数:10
}, {
游戏:1,
团队:“bName”,
分数:1
}, {
游戏:2,
团队:“aName”,
分数:20
}, {
游戏:2,
团队:“bName”,
分数:30
}]
const result=Object.values(data.reduce)(结果,{team,score})=>{
如果(!result[team])result[team]={team,score}
其他结果[团队]。得分+=得分;
返回结果;
}, {}));

console.log(result)
“javascript按属性分组对象数组”(+finally“site:stackoverflow.com”)代码段记录一个空对象,这就是您想要的吗?您的脚本是如何工作的?您可能需要修复由
Map.prototype.values()
Great()返回的迭代器的输出!非常感谢。结果现在是一个数组