【问题标题】:How to filter a nested array with another array of strings?如何用另一个字符串数组过滤嵌套数组?
【发布时间】:2021-04-18 00:12:42
【问题描述】:

我有一个需要按技能过滤的数组,用户正在选择技能,我需要结果来匹配整个过滤器,而不仅仅是其中的任何一个。

[
{bio: ""
community_role: ""
display_name: ""
email: ""
facebook: ""
first_name: "sophia"
headshot: ""
instagram: ""
job_title: ""
last_name: ""
linkedin: ""
mentee: false
mentor: true
organization_name: ""
skills: [
{user_id: 7, skill_id: 398, category_id: 7, skill: "Running - casual"}
{user_id: 7, skill_id: 415, category_id: 8, skill: "Conflict resolution"}
{user_id: 7, skill_id: 436, category_id: 8, skill: "Interviewing"}
{user_id: 7, skill_id: 3, category_id: 1, skill: "Advising"}
{user_id: 7, skill_id: 87, category_id: 2, skill: "Risk management"}
{user_id: 7, skill_id: 15, category_id: 1, skill: "Decision making"}
{user_id: 7, skill_id: 9, category_id: 1, skill: "Communication"}
{user_id: 7, skill_id: 391, category_id: 7, skill: "Physical fitness"}
{user_id: 7, skill_id: 414, category_id: 8, skill: "Conflict management"}
]
twitter: "twitter.link"
user_id: 1
},
{bio: ""
community_role: ""
display_name: ""
email: ""
facebook: ""
first_name: "Sarah"
headshot: ""
instagram: ""
job_title: ""
last_name: ""
linkedin: ""
mentee: false
mentor: true
organization_name: ""
skills: [
{user_id: 2, skill_id: 23, category_id: 1, skill: "Integrity"}
{user_id: 2, skill_id: 98, category_id: 2, skill: "Warehousing"}
{user_id: 2, skill_id: 9, category_id: 1, skill: "Communication"}
{user_id: 2, skill_id: 245, category_id: 4, skill: "Symfony"}
]
twitter: ""
user_id: 2
},{
bio: ""
community_role: ""
display_name: ""
email: ""
facebook: ""
first_name: "Kristin"
headshot: ""
instagram: ""
job_title: ""
last_name: ""
linkedin: ""
mentee: false
mentor: false
organization_name: ""
skills: [
{user_id: 4, skill_id: 23, category_id: 1, skill: "Integrity"}
{user_id: 4, skill_id: 245, category_id: 4, skill: "Symfony"}
{user_id: 4, skill_id: 9, category_id: 1, skill: "Communication"}
{user_id: 4, skill_id: 98, category_id: 2, skill: "Warehousing"}
]
twitter: ""
user_id: 4
}

下面是我的代码。它返回所有拥有其中一项搜索技能(sophia、sarah 和 kristin)的用户。我希望它只显示莎拉和克里斯汀。我是编码和stackoverflow的新手,希望我提供了足够的信息来获得帮助,谢谢!

searchSkills = ['Communication', 'Integrity']

results = results.filter((v) =>
    v.skills.some((skill) => searchSkills.includes(skill.skill))
  );`

【问题讨论】:

    标签: javascript arrays reactjs filter


    【解决方案1】:
    results = results.filter(user => searchSkills.every(searchTerm => user.skills.some(skillObj => skillObj.skill === searchTerm)))
    

    这将确保 searchSkills 数组的每一项都包含在用户的技能中。希望这对你有用! 我重命名了一些变量以使其更具可读性:)

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2021-07-07
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      相关资源
      最近更新 更多