Javascript中的嵌套过滤器
我在javascript中有以下嵌套过滤器,但是从内部过滤器返回的用户并不能满足我想要的角色,所以我使用了不同的方法。这是我的Javascript中的嵌套过滤器,javascript,reactjs,Javascript,Reactjs,我在javascript中有以下嵌套过滤器,但是从内部过滤器返回的用户并不能满足我想要的角色,所以我使用了不同的方法。这是我的 let admins = []; let customers = []; if(users.results){ users.results.filter(user => { user.roles.filter(role => { if(role.role.name === 'ADMIN'){
let admins = [];
let customers = [];
if(users.results){
users.results.filter(user => {
user.roles.filter(role => {
if(role.role.name === 'ADMIN'){
admins.push(user);
}
});
});
users.results.filter(user => {
user.roles.filter(role => {
if (role.role.name === 'CUSTOMER') {
customers.push(user);
}
});
});
}
有效载荷的示例是
{
"addresses": [],
"created_at": "2020-04-18 14:21:55",
"email": "deliverypersonnel4@mail.com",
"first_name": "Lucas",
"id": "5c7f9e0d-4727-416c-b0ce-61bc7542aee4",
"image": null,
"is_active": false,
"is_verified": false,
"last_name": "DeliveryPersonnel",
"phone": "2547324738723",
"roles": [
{
"role": {
"description": "Can only access the online shop",
"name": "CUSTOMER"
}
},
{
"role": {
"description": "Can only access orders for delivery",
"name": "DELIVERY_PERSONNEL"
}
}
],
"updated_at": "2020-04-18 14:21:55"
},
{
"addresses": [],
"created_at": "2020-04-18 14:20:57",
"email": "testadmin@mail.com",
"first_name": "Admin",
"id": "40f32c1e-5f53-41c7-8b78-e4918b05472d",
"image": null,
"is_active": false,
"is_verified": false,
"last_name": "Test",
"phone": "254711123456",
"roles": [
{
"role": {
"description": "Can create, view & update all records",
"name": "ADMIN"
}
},
{
"role": {
"description": "Can only access the online shop",
"name": "CUSTOMER"
}
}
],
"updated_at": "2020-04-18 14:20:57"
}
我怎样才能得到
testadmin@mail.com
在管理员
和客户
数组中,并具有deliverypersonnel4@mail.com
在客户
阵列中,不使用阵列推送方法。尝试使用复杂条件筛选:
let customers = users.filter(user => {
return user.roles.some(role => role.role.name === 'CUSTOMER')});
let admins = users.filter(user => {
return user.roles.some(role => role.role.name === 'ADMIN')});
使用复杂条件尝试筛选:
let customers = users.filter(user => {
return user.roles.some(role => role.role.name === 'CUSTOMER')});
let admins = users.filter(user => {
return user.roles.some(role => role.role.name === 'ADMIN')});
我不知道你想要什么结果。但是如果您不想使用push方法,那么可以使用给定的方法
const admins = users.filter(({roles}) => roles.some(({role: {name}}) => name === 'ADMIN'));
const customers = users.filter(({roles}) => roles.some(({role: {name}}) => name === 'CUSTOMER'));
我不知道你想要什么结果。但是如果您不想使用push方法,那么可以使用给定的方法
const admins = users.filter(({roles}) => roles.some(({role: {name}}) => name === 'ADMIN'));
const customers = users.filter(({roles}) => roles.some(({role: {name}}) => name === 'CUSTOMER'));
不要对副作用使用filter()
,这会让人困惑。不要对副作用使用filter()
,这会让人困惑。