[英]How can I .filter() through a .filter()? JavaScript
I'm trying to dynamically compare a searchTag
field against an array student.tags
, for every student which themselves all live in another array called students
我正在尝试将searchTag
字段与数组student.tags
动态比较,对于每个学生都居住在另一个名为students
数组中
So something like below所以像下面这样
students = [
0: {
name: "Cheddar",
...,
tags: ["gravy","steak"]
},
...,
40: {
name: "Stacy",
...,
tags: ["gravy","grade"]
},
]
I'm failing bad with a filter inside a filter, and struggling returning the students who have that tag in their tag array我在过滤器中使用过滤器失败了,并且努力返回标签数组中具有该标签的学生
I can do我可以
students.filter((student) => {
if ((student.tags.includes(searchTag))) {
return student;
} return '';
})
but this returns only on exact match and I need to find students dynamically, ie typing 'gra' returns both student 0 and 40, but 'grad' returns only 40但这仅在完全匹配时返回,我需要动态查找学生,即输入“gra”返回学生 0 和 40,但“grad”仅返回 40
You can use a combination of filter and some to filter the array您可以使用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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.