【问题标题】:JavaScript filter one array of objects using another arrayJavaScript 使用另一个数组过滤一个对象数组
【发布时间】:2019-02-01 08:47:05
【问题描述】:

比较或检查两个不同的对象数组并返回数据的最佳算法或方法是什么,如果存在基于我下面的问题的匹配项。我有一组对象,在下图中是包含一系列技能的工作。而且我有一系列包含技能的技能,我想检查是否存在来自工作技能的技能数组中的任何技能。如果工作中存在一系列技能中的任何技能,则只返回匹配技能的工作。我希望只有在一系列技能中具有匹配技能的工作才会被返回。它将检查工作中是否存在一系列技能中的任何项目,如果存在一个或多个,那么它将返回匹配的工作。谢谢。,

jobs(包含技能数组的对象数组)

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

【问题讨论】:

    标签: javascript arrays filter compare


    【解决方案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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多