有一个带有角色类别userByRoles
的数组和一个带有角色的用户数组users
。将用户users
塞进userByRoles.children
. 在我看来,我的方法不是很漂亮而且不可读,我想以某种方式对其进行重构。
PS中userByRoles
您可以更改任何数据,除了title & children
let userByRoles = [{
title: 'Role 1',
value: '0',
key: 'role_1',
children: []
},
{
title: 'Role 2',
value: '1',
key: 'role_2',
children: []
},
{
title: 'Role 3',
value: '2',
key: 'role_3',
children: []
},
{
title: 'All users',
value: '3',
key: 'all_users',
children: []
}
];
const users = [{
name: 'user 1',
role: 'role_1'
}, {
name: 'user 2',
role: 'role_1'
}, {
name: 'user 3',
role: 'role_2'
}, {
name: 'user 4',
role: 'role_2'
}, {
name: 'user 5',
role: 'role_3'
}, {
name: 'user 6',
role: 'role_4'
}, {
name: 'user 7',
role: 'role_5'
}, {
name: 'user 9',
role: 'role_4'
}, {
name: 'user 10',
role: 'role_3'
}, {
name: 'user 11',
role: 'role_2'
}, ]
function myFunc() {
users.forEach((value) => {
if (value.role === 'role_1') {
userByRoles[0].children.push({
name: value.name
})
} else if (value.role === 'role_2') {
userByRoles[1].children.push({
name: value.name
})
} else if (value.role === 'role_3') {
userByRoles[2].children.push({
name: value.name
})
} else {
userByRoles[3].children.push({
name: value.name
})
}
});
return userByRoles;
}
console.log(myFunc())
你可以这样做。