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)