比较
或检查两个不同的对象数组的最佳算法或方法是什么,如果根据我下面的问题存在匹配项,则返回数据。我有一个对象数组,如下图所示,其中包含一系列技能的工作。我有一系列包含技能的技能,我想检查是否有任何技能来自一系列技能,如果它存在于工作技能上。如果作业中存在一系列技能中的任何技能,则仅返回与技能匹配的工作。我希望只有从一系列技能中具有匹配技能的工作才能返回。它将检查作业中是否存在技能数组中的任何项目,如果存在一个或多个,它将返回匹配的作业。谢谢。
作业(包含技能数组的对象数组)
在此处输入图像描述
技能(技能数组)
在此处输入图像描述
获取作业响应的代码
data.jobs_data(me, params, token).then(function (response) {
me.record.is_searching = false
if (response.status == "200") {
me.records.jobs = response.data.data
console.log("Jobs:", me.records.jobs)
var count = response.data.count
count = count + 1
me.setKeyWords(me.filters)
Pagination.init(me, count)
$timeout(function () {
me.record.is_searching = false
}, 400)
}
})
工作技能
me.load_job_details = function (detail) {
console.log("Skills :" , me.record.job_detail.skills)
}
试试这个:
var skillObj = [
"Python",
"Photoshop",
"Java Dev",
"System Administrator",
"Software Engineer"
];
var jobObj = [{
"address": "address1",
"company": "abc",
"skills": ['Software Engineer', 'Human Resource']
},{
"address": "address2",
"company": "xyz",
"skills": ['Python', 'Photoshop']
},{
"address": "address3",
"company": "alpha",
"skills": ['Data Analyst', 'BA']
}];
var res = jobObj.filter(obj => {
return skillObj.some(r=> obj.skills.indexOf(r) >= 0);
});
console.log(res);