LEATH
您可以创建数组中所有作业的数组departments,然后accounts使用过滤数组.some(..)来检查先前生成的数组中是否存在特定作业。这是一个例子:const accounts = [ { "AccountId": 25205, "CandidateID": 8474, "JobTitleID": 250 }, { "AccountId": 25206, "CandidateID": 8474, "JobTitleID": 253 }, { "AccountId": 25232, "CandidateID": 8474, "JobTitleID": 257 }, { "AccountId": 25233, "CandidateID": 8474, "JobTitleID": 261 }, { "AccountId": 25236, "CandidateID": 8474, "JobTitleID": 256 }, { "AccountId": 25237, "CandidateID": 8474, "JobTitleID": 255 }, { "AccountId": 25245, "CandidateID": 8474, "JobTitleID": 281 }, { "AccountId": 25246, "CandidateID": 8474, "JobTitleID": 279 }, { "AccountId": 25265, "CandidateID": 8474, "JobTitleID": 362 }]const departments = [ { "deptName": "Production", "jobTitles": [ { "JobTitleID": 246, "DepartmentID": 72, "JobName": "Department Foreman" }, { "JobTitleID": 357, "DepartmentID": 72, "JobName": "Maintenance Supervisor" }, { "JobTitleID": 247, "DepartmentID": 72, "JobName": "Production Manager" }, { "JobTitleID": 362, "DepartmentID": 72, "JobName": "Safety & Compliance Supervisor" } ] }, { "deptName": "Engineering", "jobTitles": [ { "JobTitleID": 250, "DepartmentID": 73, "JobName": "Architect" }, { "JobTitleID": 248, "DepartmentID": 73, "JobName": "CAD Operator" }, { "JobTitleID": 249, "DepartmentID": 73, "JobName": "Engineering Manager" }, { "JobTitleID": 251, "DepartmentID": 73, "JobName": "Professional Engineer" } ] }, { "deptName": "Purchasing", "jobTitles": [ { "JobTitleID": 253, "DepartmentID": 74, "JobName": "Purchasing Agent" }, { "JobTitleID": 255, "DepartmentID": 74, "JobName": "Purchasing Manager" }, { "JobTitleID": 252, "DepartmentID": 74, "JobName": "Yard Foreman" } ] }]const jobs = departments.reduce((a, c) => (a.concat(c.jobTitles)), []);const results = accounts.filter(account => jobs.some(job => job.JobTitleID === account.JobTitleID));console.log(results);
森栏
您可以使用 获得优化解决方案Set object。Set 对象仅存储任何类型的唯一值。首先,使用数组中的 set 对象获取所有唯一的 JobTitleID departments。然后使用Array.prototype.filter()方法对accounts数组进行过滤即可得到结果。const accounts = [ { AccountId: 25205, CandidateID: 8474, JobTitleID: 250, }, { AccountId: 25206, CandidateID: 8474, JobTitleID: 253, }, { AccountId: 25232, CandidateID: 8474, JobTitleID: 257, }, AccountId: 25233, CandidateID: 8474, JobTitleID: 261, }, { AccountId: 25236, CandidateID: 8474, JobTitleID: 256, }, { AccountId: 25237, CandidateID: 8474, JobTitleID: 255, }, { AccountId: 25245, CandidateID: 8474, JobTitleID: 281, }, { AccountId: 25246, CandidateID: 8474, JobTitleID: 279, }, { AccountId: 25265, CandidateID: 8474, JobTitleID: 362, },];const departments = [ { deptName: 'Production', jobTitles: [ { JobTitleID: 246, DepartmentID: 72, JobName: 'Department Foreman', }, { JobTitleID: 357, DepartmentID: 72, JobName: 'Maintenance Supervisor', }, { JobTitleID: 247, DepartmentID: 72, JobName: 'Production Manager', }, { JobTitleID: 362, DepartmentID: 72, JobName: 'Safety & Compliance Supervisor', }, ], }, { deptName: 'Engineering', jobTitles: [ { JobTitleID: 250, DepartmentID: 73, JobName: 'Architect', }, { JobTitleID: 248, DepartmentID: 73, JobName: 'CAD Operator', }, { JobTitleID: 249, DepartmentID: 73, JobName: 'Engineering Manager', }, { JobTitleID: 251, DepartmentID: 73, JobName: 'Professional Engineer', }, ], }, { deptName: 'Purchasing', jobTitles: [ { JobTitleID: 253, DepartmentID: 74, JobName: 'Purchasing Agent', }, { JobTitleID: 255, DepartmentID: 74, JobName: 'Purchasing Manager', }, { JobTitleID: 252, DepartmentID: 74, JobName: 'Yard Foreman', }, ], },];const set = new Set();departments.forEach((x) => x.jobTitles.forEach((y) => set.add(y.JobTitleID)));const ret = accounts.filter((x) => set.has(x.JobTitleID));console.log(ret);