javascript - 不同对象的映射列表
问题描述
从 api 收到的数据不是我想要的格式,所以必须重新映射它。我有很多人,我想将他们归为他们所属的团队。我必须首先遍历每个人并获得团队名称。对团队名称进行区分,创建一个新的对象数组,然后将它们分配给正确的团队。
[{name: 'John', age: 23, teamName: 'Development' },
{name: 'Ben', age: 50, teamName: 'Development' },
{name: 'Matt', age: 24, teamName: 'Finance' },
{name: 'Amy', age: 35, teamName: 'Sales' },
{name: 'Laura', age: 31, teamName: 'Finance' }]
这就是我试图让不同的团队...
const staffs = res._embedded['staff'];
const teams = staffs.map(staff => staff.teamName);
const distinctTeams = [...new Set(teams)];
将它们映射到正确的团队
const teamsWithStaff = staffs.map(staff =>
distinctTeams[staff.teamName].push({ name: staff.name, age: staff.age })
);
解决方案
您可以使用 reduce 和 group 值基于teamName
let data =[{name: 'John', age: 23, teamName: 'Development' },{name: 'Ben', age: 50, teamName: 'Development' },{name: 'Matt', age: 24, teamName: 'Finance' },{name: 'Amy', age: 35, teamName: 'Sales' },{name: 'Laura', age: 31, teamName: 'Finance' }]
let op = data.reduce((op,inp) => {
let {teamName} = inp
op[teamName] = op[teamName] || []
op[teamName].push(inp)
return op
},{})
console.log(op)
推荐阅读
- apache-spark - 由于 AM Container,应用程序失败 2 次,退出代码为 -104
- mysql - 如何为 AWS RDS 加载数据 infile mysql 工作台?
- c++ - SWIG:std/multimap.i 似乎因 Tcl 包装而损坏
- docker - 无法在 Dockerfile 中替换 nginx 环境变量
- json - JsonResult 将日期和时间编码为 UTC ......如何避免这种情况?
- python - 如何枚举任意深度的 n 叉树中每个元素的路径
- autodesk-forge - 如何从 BIM 360“计划”文件夹访问文件的“标题”
- rsync - 使用 R-sync 在数据中心之间持续更改文件复制 100 GB 是个好主意吗?
- javascript - 添加选项以在 JavaScript 中选择字段
- reactjs - React-Native 中的自定义滚动选择器功能