不同对象的映射列表

时间:2019-06-12 16:40:03

标签: 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 })
                    );

1 个答案:

答案 0 :(得分:0)

您可以基于teamName

使用reduce和group值

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)

相关问题