【发布时间】:2019-04-16 17:21:03
【问题描述】:
我正在尝试获取只有活跃爱好且角色类型为“A”的员工的列表。
我尝试使用以下查询,但没有成功。
我做错了什么?
// Get all the employees with active hobbies and have a role of 'A'
var employees = people.find(item => item.key === 'Employees').employees.map(emp => emp.hobbies).filter(hobby => hobby.filter(h => h.active === true && h.roles.includes('A')));
console.log(employees);
<script>
var people = [{
key: 'Employees',
employees: [{
name: 'joe',
age: 20,
hobbies: [{
'active': true,
name: 'skating',
roles: ['C', 'A']
}]
},
{
name: 'amy',
age: 32,
hobbies: [{
'active': true,
name: 'surfing',
roles: ['A']
}]
},
{
name: 'kate',
age: 34,
hobbies: [{
'active': true,
name: 'running',
roles: ['C']
}, {
name: 'Chess',
active: false,
roles: ['C', 'A']
}]
}
]
}];
</script>
更新
当我向数组中添加更多具有新爱好的员工时,接受的答案无法产生正确的输出。为什么会这样?
var people = [{
key: 'Employees',
employees: [{
name: 'Steve',
age: 50,
hobbies: [{
active: true,
name: 'skating',
roles: ['C', 'A']
},
{
active: false,
name: 'skating',
roles: ['C', 'A']
},
{
active: true,
name: 'snooker',
roles: ['C', 'A']
},
{
active: true,
name: 'darts',
roles: ['C', 'A']
}
]
},{
name: 'joe',
age: 20,
hobbies: [{
active: true,
name: 'skating',
roles: ['C', 'A']
}
]
}, {
name: 'amy',
age: 32,
hobbies: [{
'active': true,
name: 'surfing',
roles: ['A']
}
]
}, {
name: 'kate',
age: 34,
hobbies: [{
active: true,
name: 'running',
roles: ['C']
}, {
name: 'Chess',
active: false,
roles: ['C', 'A']
}
]
}
]
}
];
var employees = people.find(item => item.key === 'Employees').employees.filter(employee => employee.hobbies.every(h => h.active && h.roles.includes('A')));
【问题讨论】:
-
只是澄清一下:“谁只有活跃的爱好”是指他们所有的爱好都必须是活跃的?或者至少一个? “谁的角色是A型”意味着他们获得了一个角色?或者他们的积极爱好必须扮演这个角色?还是他们所有的爱好都必须扮演这个角色?
标签: javascript arrays dictionary filter