2 回答

TA贡献1936条经验 获得超6个赞
您可以创建数组中所有作业的数组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);

TA贡献1810条经验 获得超5个赞
您可以使用 获得优化解决方案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);
添加回答
举报