Javascript数组过滤和提取

Javascript数组过滤和提取,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个JSON包含像这样的数据,一个数组和多个对象在同一级别 [ { "team":"barcelona", "name":"Messi", "goals":29, "cards":8, "played":33 }, { "team":"

我有一个JSON包含像这样的数据,一个数组和多个对象在同一级别

[
   {
      "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是一个很好的开始,到目前为止您尝试了什么?是的,当然可以。现在最简单的方法是从
开始,循环迭代源数组,在那里构建新对象,并将它们推送到新数组