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

时间:2019-02-01 08:47:06

标签: javascript arrays filter compare

如果存在以下基于我的问题的匹配项,那么比较或检查两个不同对象数组并返回数据的最佳算法或方法是什么?我在下面的图片中有一个对象数组,其中包含技能数组。而且我有一系列包含技能的技能,我想从技能列表中检查是否存在任何工作技能。并且,如果工作中存在技能中的任何一项技能,则仅返回与技能匹配的工作。我希望只有技能与技能相匹配的工作才能返回。它将检查技能中是否有任何一项存在于工作中,甚至存在一项或多项,然后它将返回具有匹配项的工作。谢谢。

职位(包含技能数组的对象数组)

enter image description here

技能(技能数组)

enter image description here

获取工作响应的代码

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

1 个答案:

答案 0 :(得分:1)

尝试一下:

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