javascript - 转换对象的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'}]
]
}
解决方案
您可以为每个团队 ID 创建一个对象查找,然后使用Object.entries
and生成结果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; }
推荐阅读
- html - 如何创建多个将设置分开的收音机类型?
- r - 安装Rcpp失败,出现很多错误
- python - 我如何找到一个图像在另一个图像中的百分比?
- r - 我想了解为什么我的 else if station 不工作
- asp.net-mvc - 添加“使用实体框架的控制器”时未列出模型类
- angular - BehaviourSubject 在 Angular 中触发“表达式在检查后已更改”
- vue.js - Vue:使用 HTML 元素的动态组件
- mysql - mysql插入后无法获取insertId
- angular - 如何在 Angular Jest 中编写单元测试和模拟 httpClient
- c - Lua 或 JVM 等虚拟机如何表示(和处理)更大的数据类型?