从含对象数组的对象数组中筛选指定员工ID的数据
筛选考勤数据中指定员工的条目并保留其信息
需求说明
从给定的考勤数组中,筛选出所有包含id:1员工的日期条目,且每个条目仅保留该员工的考勤信息。
输入示例
const attendance = [ { date: 1, employees: [ { id: 1, name: 'mahadev', status: 'p' }, { id: 2, name: 'roshan', status: 'p' }, ] }, { date: 2, employees: [ { id: 1, name: 'mahadev', status: 'a' }, { id: 2, name: 'roshan', status: 'p' }, ] }, ];
期望输出
[ { date:1, employees: [ { id:1, name:'mahadev', status:'p' } ] }, { date:2, employees: [ { id:1, name:'mahadev', status:'a' } ] }, ]
解决方案
可以通过map遍历每个日期条目,结合filter过滤出目标员工的信息,代码实现如下:
const filteredAttendance = attendance.map(item => ({ ...item, employees: item.employees.filter(emp => emp.id === 1) }));
代码说明
- 使用
map遍历原考勤数组的每个日期对象,生成新数组,避免直接修改原数据 - 用扩展运算符
...item保留原对象的date属性 - 对每个对象的
employees数组执行filter,仅保留id等于1的员工对象
运行上述代码后,即可得到符合要求的筛选结果。
内容的提问来源于stack exchange,提问作者Mahadev Mandal
相关产品推荐
相关产品推荐

