const 项目 = [
{
projectId: 'abc123',
name: 'Project 1',
userProjects: [
{
userId: 'xyz789',
projectId: 'abc123',
user: { userId: 'xyz789', email: '[email protected]' },
},
{
userId: 'sdf012',
projectId: 'abc123',
user: { userId: 'sdf012', email: '[email protected]' },
},
],
},
{
projectId: 'def456',
name: 'Project 2',
userProjects: [
{
userId: 'xyz789',
projectId: 'def456',
user: { userId: 'xyz789', email: '[email protected]' },
},
],
},
];
到, 所需的输出: [
{
userId: 'xyz789',
email: '[email protected]',
projects: [
{ projectId: 'abc123', name: 'Project 1' },
{ projectId: 'def456', name: 'Project 2' },
],
},
];
我被困在这个问题上。执行此操作的最佳动态方法是什么? 我试图映射数组,但我对内部对象“用户”感到困惑。我们可以直接更改这个数组还是只需要创建一个新函数?
我试图映射数组,但我对内部对象“用户”感到困惑。我们可以直接更改这个数组还是只需要创建一个新函数?`
你似乎有一个项目对象数组,你想将它转换成一个用户对象数组及其相关项目。这是实现此转换的功能:
function transformProjectsToUsers(projects) {
const userMap = new Map();
projects.forEach((project) => {
project.userProjects.forEach((userProject) => {
const { userId, email } = userProject.user;
const user = userMap.get(userId) || {
userId,
email,
projects: [],
};
user.projects.push({
projectId: project.projectId,
name: project.name,
});
userMap.set(userId, user);
});
});
return Array.from(userMap.values());
}
const users = transformProjectsToUsers(projects);
console.log(users);