Tengo una matriz de objetos que me gustaría filtrar pero no sé las propiedades que tengo en los objetos (ni los datos ni la matriz de filtros):
myArray = [ { id: "100", area: "01", country: "AT"}, { id: "101", area: "02", country: "DE"}, { id: "102", area: "01", country: "DE"}, { id: "103", area: "03", country: "CH"}, { id: "104", area: "01", country: "AT"} ]y mi filtro es:
myFilter = { area: "01", country: "AT" }Me gustaría que me devolvieran esto:
myArrayFiltered = [ { id: "100", area: "01", country: "AT"}, { id: "104", area: "01", country: "AT"} ]¿Cómo haría para hacer esto? Para que quede perfectamente claro, no sé las propiedades que buscaré, es decir, no sé qué propiedades tendrán myArray o myFilter. Si el filtro contiene una clave que no está en myArray, ¡esperaría una matriz vacía!
PD: Tampoco sé cuántas entradas se filtrarán, es decir, dependiendo de lo que ingresen mis usuarios, podría obtener:
myFilter = [ {area: "01"} ]myArray.filter((item) => Object.entries(myFilter).every(([key, val]) => item[key] === val)) var myArray = [ { id: "100", area: "01", country: "AT"}, { id: "101", area: "02", country: "DE"}, { id: "102", area: "01", country: "DE"}, { id: "103", area: "03", country: "CH"}, { id: "104", area: "01", country: "AT"} ] var myFilter = { area: "01", country: "AT" } var filteredArray = myArray.filter(function(item) { return Object.keys(myFilter).every(function(c) { return item[c] === myFilter[c]; }); } ); console.log(filteredArray)myArray.filter((item) => Object.keys(item).every((key) => !myFilter[key]|| myFilter[key] === item[key]))