Filtrado con múltiples opciones en React Redux:
opción de filtro:
{ option1: ['GY'], option2: ['Y'], option3: [], option4: ['N'], option5: ['A', 'W'], }La función de filtro:
body.search.listFiltered = body.search.list.filter( (i) => filterOption["option1"].includes(is) && filterOption["option2"].includes(ib) && filterOption["option3"].includes(iup) && filterOption["option4"].includes(ifp) && filterOption["option5"].includes(inp) ); Debería funcionar incluso cuando, por ejemplo, la option3 está vacía; podría ser cualquier otra opción.
Cada option-x funciona con un objeto en particular, como la option1 con el objeto is . Mientras que option2 con ib y así sucesivamente...
En este momento está devolviendo una matriz vacía [] .
¿Qué estoy haciendo mal aquí?
puedes hacer algo como esto
const filterOption = { option1: ['GY'], option2: [true], option3: [], option4: [false], option5: ['A', 'W'] } const array = [{b:'GY'},{s:true},{p:'A'},{x:false},{e:'A'}, {b:'GY',s:true,p:'A', x:false, e:'A' }] const result = array.filter( (i) => { const filterCheck = option => item => filterOption[option].length > 0 ? filterOption[option].includes(item) : true return filterCheck("option1")(ib) && filterCheck("option2")(is) && filterCheck("option3")(ip) && filterCheck("option4")(ix) && filterCheck("option5")(ie)} ) console.log(result)