Estoy intentando configurar una aplicación que acepta dos criterios de búsqueda (Nombre y/o Etiqueta). Tengo configurada la búsqueda dinámica para la búsqueda por nombre. Pero no puedo filtrar más en la búsqueda del nombre de la etiqueta. ¿Cómo hago para configurar una búsqueda dinámica para 2 valores? En mi caso, debería poder buscar por name && tag o solo por name o solo por tag .
const filteredResults = studentData.filter((student) => { const name = student.firstName + " " + student.lastName; return ( name.toLowerCase().includes(searchTerm.toLowerCase()) || student.tags.filter((tag) => { return tag.toLowerCase().includes(tagTerm.toLowerCase()); }) ); });Así es como se ve una entrada de los datos de API:
{ city: "Fushë-Muhurr" company: "Yadel" email: "iorton0@imdb.com" firstName: "Ingaberg" grades: [ "78", "100", "92", … ] id: "1" lastName: "Orton" pic: "https://storage.googleapis.com/hatchways-app.appspot.com/assessments/data/frontend/images/voluptasdictablanditiis.jpg" skill: "Oracle" tags: [ "Tag1", "Tag2" ] }Estoy vinculando mi repositorio de githubo aquí si alguien quiere echarle un vistazo (es un proyecto muy pequeño): https://github.com/EricPezzulo/HatchwaysFrontendAssessment
puedes probar esto
const result = studentData.filter(({ firstName, lastName, tags }) => new RegExp(searchTerm, 'gui').test(`${firstName} ${lastName} ${tags.join(' ')}`));Como se menciona en los comentarios, está tratando de filtrar a través de ambos o solo uno de ellos.
El siguiente código debería resumir lo que ha estado pidiendo
const studentsArray = [{ city: "Fushë-Muhurr", company: "Yadel", email: "iorton0@imdb.com", firstName: "Ingaberg", grades: [ "78", "100", "92"], id: "1", lastName: "Orton", pic: "https://storage.googleapis.com/hatchways-app.appspot.com/assessments/data/frontend/images/voluptasdictablanditiis.jpg", skill: "Oracle", tags: [ "Tag1", "Tag2" ], }, { city: "Fushë-Muhurr", company: "Yadel", email: "iorton0@imdb.com", firstName: "Ingaberg", grades: [ "78", "100", "92"], id: "1", lastName: "Orton", pic: "https://storage.googleapis.com/hatchways-app.appspot.com/assessments/data/frontend/images/voluptasdictablanditiis.jpg", skill: "Oracle", tags: [ "Tag3", "Tag4" ], }] const searchTerm = '' const tagTerm = '' const filteredResults = studentsArray.filter((student) => { const name = student.firstName + ' ' +student.lastName; const nameIncludesSearchTerm = name.toLowerCase().includes(searchTerm.toLowerCase()) const tagsIncludesTagTerm = student.tags.map(t=>t.toLowerCase()).includes(tagTerm.toLowerCase()) const includesNameAndTag = nameIncludesSearchTerm && tagsIncludesTagTerm const includeNameOrTag = nameIncludesSearchTerm || tagsIncludesTagTerm return includesNameAndTag || includeNameOrTag; }); console.log({filteredResults})