lo siento por mi inglés al principio. Tengo un problema al filtrar una lista de productos publicados en JSON. El código está escrito en react native con el uso de react redux.
El objeto de cada producto se ve así:
ProductTest { "barcode": "barcode", "brand": "brand", "category": "category", "description": "description", "details": "details", "filters": Object { "cienkie": false, "farbowane": false, "krecone_i_puszczace": false, "normalne": false, "oslabione": false, "przetluszczajace": false, "suche_i_zniszczone": false, "wszystkie": true, }, "id": "0", "image": "image", "ingredients": "ingredients", "name": "name", },Y la lista de "filtros aplicados" se ve así:
Object { "cienkie": false, "farbowane": false, "krecone_i_puszczace": false, "normalne": false, "oslabione": false, "przetluszczajace": false, "suche_i_zniszczone": false, "wszystkie": false, }No sé cómo hacer que la lista de "filtros aplicados" se compare con los "filtros" para cada producto y devolver los productos coincidentes de la lista. Si tienes alguna idea te lo agradecería.
Puede utilizar el método de filtro de matriz :
let keys = Object.keys(appliedFilters); let filteredList = productList.filter(product => { let matching = true; keys.forEach(key => { if(product.hasOwnProperty(key)){ if(!(product.filters[key] === appliedFilters[key])) matching = false; } } if(matching) return product; })Si está seguro de que el orden de los atributos del filtro y los objetos del producto no cambiarán, puede simplificar así:
let filteredList = productList.filter(product => JSON.stringify(product.filters) === JSON.stringify(appliedFilters))