我如何通过.filter()来.filter()?JavaScript



我正试图动态比较searchTag字段与数组student.tags,对于每个学生,他们自己都生活在另一个名为students的数组

下面是

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

我失败了与过滤器内的过滤器,并努力返回谁在他们的标签数组标签的学生

I can do

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

但这只返回精确匹配,我需要动态地找到学生,即输入'gra'返回学生0和40,但'grad'只返回40

你可以使用filter和some的组合来过滤数组

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

最新更新