Incluye un método que funciona solo para un valor, pero quiero filtrar varios valores con una coma como esta "mahmoud, faizan". Obtendré estos valores de la entrada del usuario.
datos json
[{ "text": "adnan hassan" }, { "text": "adnan hassan mahmoud", }, { "text": "adnan hassan faizan", }]Función de filtro
const filterFunction = (a) => { if(includeKeyword) return a.text.includes("mahmoud") }Función de filtro con representación de mapa
postRes.filter(filterFunction).map((data, index) => (Le di dos declaraciones de devolución para elegir, dependiendo de si desea hacer coincidir todas las partes o al menos una parte de lo que se escribió:
const filterFunction = (a) => { if(includeKeyword) const parts = userInput.split(","); // if you need the returned element to match *all* parts (AND) return parts.every(p => a.text.includes(p.trim()); // if you need it to match *at least one* part (OR) return parts.some(p => a.text.includes(p.trim()); } };para su escenario, puede personalizar la función de filtro para obtener un segundo parámetro y usar array.some:
const filterFunction = (a, searchArray) => { if (searchArray.some((v) => a.text.includes(v))) { return a; } }; const result = postRes.filter((item) => filterFunction(item, ["mahmoud", "faizan"])); console.log("result ", result);si te gusta resolver por métodos javascript, como muchas personas señalaron
if (["mahmoud", "faizan"].some((v) => a.text.includes(v))) { return a; }si te gusta la expresión regular, hazlo de esta manera
if(a.text.match(/(mahmoud|faizan)/)){ return a }