在同一数组中组合来自不同对象的值-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()返回的迭代器的输出!非常感谢。结果现在是一个数组