首页 > 解决方案 > 转换对象的json数组

问题描述

我有一个带有“过程”和“团队”的 json。

我想将它按团队分组。

接下来,我展示了一个我想要实现的片段。

我该怎么做?

dados:{
proceds:[
 {id:'1', proc:'11', teams:[{team_id:1},{team_id:2}]},
 {id:'2', proc:'12', teams:[{team_id:1},{team_id:3}]},
 {id:'3', proc:'13', teams:[{team_id:2},{team_id:3}]},
]
}

我想将“dados”转换为:

dados:{
 teams:[
  {team_id:1, proceds:[{id:'1', proc:'11'},{id:'2', proc:'12'}],
  {team_id:2, proceds:[{id:'1', proc:'11'},{id:'3', proc:'13'}]
  {team_id:3, proceds:[{id:'2', proc:'12'},{id:'3', proc:'13'}]
 ]
}

标签: javascriptjson

解决方案


您可以为每个团队 ID 创建一个对象查找,然后使用Object.entriesand生成结果array#map

const data = [ {id:'1', proc:'11', teams:[{team_id:1},{team_id:2}]}, {id:'2', proc:'12', teams:[{team_id:1},{team_id:3}]}, {id:'3', proc:'13', teams:[{team_id:2},{team_id:3}]}, ],
    result = Object.entries(data.reduce((r, o) => {
      o.teams.forEach(({ team_id }) => {
        r[team_id] = r[team_id] || [];
        r[team_id].push({ id: o.id, proc: o.proc });
      });
      return r;
    }, {})).map(([team_id, proceds]) => ({ team_id, proceds }));
console.log(result);
.as-console-wrapper{min-height:100% !important; top: 0; }


推荐阅读