JavaScript фильтрует один массив объектов, используя другой массив - PullRequest
0 голосов
/ 01 февраля 2019

Каков наилучший алгоритм или способ сравнения или проверки двух разных массивов объектов и возврата данных, если есть совпадение, основанное на моей проблеме ниже.У меня есть массив объектов на рисунке ниже, который представляет собой задания, которые содержат множество навыков.И у меня есть множество навыков, которые содержат навыки, и я хотел проверить, есть ли какие-либо навыки из множества навыков, если они существуют на рабочих навыках.И если какие-либо навыки из множества навыков существуют на рабочих местах, возвращайте рабочие места, которые соответствуют навыкам.Я хочу, чтобы возвращались только работы с соответствующими навыками из множества навыков.Он проверит, существует ли какой-либо элемент из множества навыков в заданиях, и если хотя бы один или несколько существует, то вернет задания с соответствием.Спасибо.,

заданий (массив объектов, содержащий массив умений)

введите описание изображения здесь

умений (массив умений)

введите описание изображения здесь

код для получения ответа на работу

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 голосов
/ 01 февраля 2019

Попробуйте это:

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