JavaScript 使用另一个数组过滤一个对象数组


比较

或检查两个不同的对象数组的最佳算法或方法是什么,如果根据我下面的问题存在匹配项,则返回数据。我有一个对象数组,如下图所示,其中包含一系列技能的工作。我有一系列包含技能的技能,我想检查是否有任何技能来自一系列技能,如果它存在于工作技能上。如果作业中存在一系列技能中的任何技能,则仅返回与技能匹配的工作。我希望只有从一系列技能中具有匹配技能的工作才能返回。它将检查作业中是否存在技能数组中的任何项目,如果存在一个或多个,它将返回匹配的作业。谢谢。

作业(包含技能数组的对象数组)

在此处输入图像描述

技能

(技能数组)

在此处输入图像描述

获取作业响应的代码

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);

相关内容

  • 没有找到相关文章