首页 > 解决方案 > 不同对象的映射列表

问题描述

从 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 })
                    );

标签: javascript

解决方案


您可以使用 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)


推荐阅读