javascript - 从对象返回最佳匹配

标签 javascript arrays object

在对象数组中:

const candidates = [
   {
     "id": "a4b7d559-8437-4bec-a6d3-65821d50a0b5",
     "name": "alpha",
     "skills": [
        "Go",
        "Ruby",
        "Python" 
     ]
  },
 {
     "id": "a4b7d559-8437-4bec-a6d3-6554880a0b5",
     "name": "metta",
     "skills": [
        "Express",
        "Ruby",
        "Python",
        "swift"
     ]
  },
  {
     "id": "a4b7d559-8437-4bec-a6d3-65821d50a0b5",
     "name": "Thitha",
     "skills": [
        "Javascript",
        "React",
        "Express",
        "Node"
     ]
  },
]

我想编写一个函数,当我将多个技能集作为数组传递时,即 ["Javascript", "Express", "Node"] 我返回与我的匹配的候选人在这种情况下,技能组将是最后一个 Thitha。我想在 API 的 req.query 端点中实现此函数。请帮忙。

返回的结果是:-

{
     "id": "a4b7d559-8437-4bec-a6d3-65821d50a0b5",
     "name": "Thitha",
     "skills": [
        "Javascript",
        "React",
        "Express",
        "Node"
     ]
  }

到目前为止我尝试过的:-

function getCandidate(subSet, set){
   const filtered = Object.values(set).filter(key => 
    subSet.includes(key)).reduce((obj, key) => {
    obj[key] = set[key]
    return obj
 }, {})
}

最佳答案

可以过滤数组,其中每个项都存在:

let filters = ["Javascript", "Express", "Node"];
const result = candidates.filter(f => filters.every(e=> f.skills.some(s => s == e)));

举个例子:

const candidates = [
   {
     "id": "a4b7d559-8437-4bec-a6d3-65821d50a0b5",
     "name": "alpha",
     "skills": [
        "Go",
        "Ruby",
        "Python"
     ]
  },
 {
     "id": "a4b7d559-8437-4bec-a6d3-6554880a0b5",
     "name": "metta",
     "skills": [
        "Express",
        "Ruby",
        "Python",
        "swift"
     ]
  },
  {
     "id": "a4b7d559-8437-4bec-a6d3-65821d50a0b5",
     "name": "Thitha",
     "skills": [
        "Javascript",
        "React",
        "Express",
        "Node"
     ]
  },
];

let filters = ["Javascript", "Express", "Node"];
const result = candidates.filter(f => filters.every(e=> f.skills.some(s => s == e)));

console.log(result);

关于javascript - 从对象返回最佳匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59086526/

相关文章:

javascript - 循环 Angular API 调用

javascript - setData - 如何从代码隐藏中的函数传递我的数据?

c - 如何将 0xFF 存储到 C 中的字符?

c - 静态常量函数指针 C

javascript - 使用 if else 条件格式化数组中的过滤函数

java - 从java中的另一个类访问变量

javascript - 是否推荐使用中介者模式?

javascript - 我可以在 Angular 1.x 的 ng-model 中使用 {{variable name}}

Python 数组索引开关 - 发生了什么?

javascript - 需要建议...Javascript OOP/命名空间