Javascript数组过滤和提取
我有一个JSON包含像这样的数据,一个数组和多个对象在同一级别Javascript数组过滤和提取,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个JSON包含像这样的数据,一个数组和多个对象在同一级别 [ { "team":"barcelona", "name":"Messi", "goals":29, "cards":8, "played":33 }, { "team":"
[
{
"team":"barcelona",
"name":"Messi",
"goals":29,
"cards":8,
"played":33
},
{
"team":"barcelona",
"name":"Grizman",
"goals":10,
"cards":8,
"played":33
},
{
"team":"realmadrid",
"name":"Hazard",
"goals":29,
"cards":8,
"played":33
},
{
"team":"realmadrid",
"name":"Benzema",
"goals":29,
"cards":8,
"played":33
}
]
我的问题是,我能用javascript函数将其转换成这样的数组吗
[
{
"name":"barcelona",
"players":[
{
"name":"Messi",
"details":{
"goals":29,
"cards":8,
"played":33
}
},
{
"name":"Grizman",
"details":{
"goals":29,
"cards":8,
"played":33
}
}
]
},
{
"name":"realmadrid",
"players":[
{
"name":"Benzima",
"details":{
"goals":29,
"cards":8,
"played":33
}
},
{
"name":"Hazard",
"details":{
"goals":29,
"cards":8,
"played":33
}
}
]
}
]
因此,如果可能的话,可以使用js函数(filter、push、pop、reduce)
不管是喜欢还是我不能,如果其他JavaScript实现在这一点上可以做到,您可以使用它来积累所需的所有数据。为此,如果累积对象中存在团队名称为键的属性,则查找每个当前对象。如果没有,则创建并添加属性团队名称和球员的空数组。在这两种情况下,为玩家添加新对象到玩家数组中。最后从对象中获取值以获得所需的数组
功能转换播放器(arr){
让结果=对象值((arr.reduce)((acc,cur)=>{
如果(!acc[当前团队])
acc[cur.team]={名称:cur.team,玩家:[]};
acc[cur.team].players.push({
姓名:cur.name,
详情:{
目标:当前目标,
卡片:cur.cards,
播放:cur.播放
}
});
返回acc;
}, {})));
返回结果;
}
让数组=[
{
“团队”:“巴塞罗那”,
“姓名”:“梅西”,
“目标”:29,
“卡片”:8张,
“播放”:33
},
{
“团队”:“巴塞罗那”,
“姓名”:“格里兹曼”,
“目标”:10,
“卡片”:8张,
“播放”:33
},
{
“球队”:“皇家马德里”,
“名称”:“危险”,
“目标”:29,
“卡片”:8张,
“播放”:33
},
{
“球队”:“皇家马德里”,
“名称”:“Benzema”,
“目标”:29,
“卡片”:8张,
“播放”:33
}
];
log(transformPlayers(array))
Reduce是一个很好的开始,到目前为止您尝试了什么?是的,当然可以。现在最简单的方法是从开始,循环迭代源数组,在那里构建新对象,并将它们推送到新数组