如何通过.filter()访问.filter()?javascript

zvms9eto  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(360)

我正在尝试动态比较 searchTag 针对数组的字段 student.tags ,对于每个自己都生活在另一个数组中的学生,称为 students 下面是这样的

students = [
  0: {
    name: "Cheddar",
    ...,
    tags: ["gravy","steak"]
  },

  ...,

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

]

我在过滤器中的过滤器失败了,并且很难返回在标签数组中有该标签的学生
我能行

students.filter((student) => {
            if ((student.tags.includes(searchTag))) {
              return student;
            } return '';
          })

但这只会在精确匹配时返回,我需要动态查找学生,即键入'gra'同时返回学生0和40,而'grad'只返回40

des4xlb0

des4xlb01#

您可以使用过滤器和一些过滤器的组合来过滤阵列

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

相关问题