首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过.filter()实现.filter()?JavaScript

如何通过.filter()实现.filter()?JavaScript
EN

Stack Overflow用户
提问于 2021-07-27 12:11:04
回答 1查看 43关注 0票数 1

我尝试将每个学生的searchTag字段与数组student.tags进行动态比较,这些学生本身都位于另一个名为students的数组中

所以类似于下面的内容

代码语言:javascript
复制
students = [
  0: {
    name: "Cheddar",
    ...,
    tags: ["gravy","steak"]
  },

  ...,

  40: {
    name: "Stacy",
    ...,
    tags: ["gravy","grade"]
  },

]

我在过滤器中使用过滤器失败了,并且很难返回在标签数组中包含该标签的学生

我能做到

代码语言:javascript
复制
students.filter((student) => {
            if ((student.tags.includes(searchTag))) {
              return student;
            } return '';
          })

但这只在完全匹配时返回,我需要动态查找学生,即键入'gra‘会返回学生0和40,但'grad’只会返回40

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-27 12:13:43

您可以组合使用filtersome来筛选阵列

代码语言:javascript
复制
const students = [
  {
    name: "Cheddar",
    tags: ["gravy", "steak"],
  },
  {
    name: "Stacy",
    tags: ["gravy", "grade"],
  },
];

let search = "gra";

const result = students.filter(({ tags }) => tags.some((tag) => tag.toLowerCase().includes(search.toLowerCase())));
console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68538858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档