如何从员工项目动态数组中筛选出拥有相同ProjectID的所有EmpID对应条目
实现思路
- 先统计每个ProjectID的出现次数,确认哪些项目有多名员工参与
- 遍历原数组,只保留对应ProjectID参与人数≥2的条目即可
代码实现(JavaScript)
// 示例输入数组 const originalData = [ { EmpID: '143,', ProjectID: '12,', DateFrom: '2013-11-01,', DateTo: '2014-01-05\r' }, { EmpID: '218,', ProjectID: '10,', DateFrom: '2012-05-16,', DateTo: 'NULL\r' }, { EmpID: '143,', ProjectID: '10,', DateFrom: '2009-01-01,', DateTo: '2011-04-27' }, ]; // 第一步:统计每个项目的参与人数 const projectCount = {}; originalData.forEach(item => { const pid = item.ProjectID; projectCount[pid] = (projectCount[pid] || 0) + 1; }); // 第二步:过滤出参与人数≥2的项目对应所有记录 const result = originalData.filter(item => projectCount[item.ProjectID] >= 2); console.log(result);
输出结果
运行后输出的result就是目标数组:
[ { EmpID: '218,', ProjectID: '10,', DateFrom: '2012-05-16,', DateTo: 'NULL\r' }, { EmpID: '143,', ProjectID: '10,', DateFrom: '2009-01-01,', DateTo: '2011-04-27' }, ]
如果你的数据里ProjectID存在多余逗号需要统一格式,统计的时候可以改成const pid = item.ProjectID.replace(',', '')处理即可,不影响整体逻辑。
内容的提问来源于stack exchange,提问作者dani
相关产品推荐
相关产品推荐

