Me gustaría filtrar esta matriz de programas (he simplificado los objetos):
const programs = [ { format: "In-Person", schedule: "Full-Time", }, { format: "Remote", schedule: "Full-Time", }, { format: "In-Person", schedule: "Part-Time", }, { format: "Remote", schedule: "Part-Time", } ]basado en un objeto de filtro:
const filters = {format: "Remote", schedule:"Full-Time"}Mi intento:
let filteredPrograms = programs.filter((program) => { return Object.entries(filters).every(([key, value]) => { program[key] == value; }); });Esto debería analizar cada programa y permitir pasar por el filtro SI: Para cada clave de filtro, el valor del programa [clave de filtro] coincide con el valor del filtro
Pero obtengo una matriz vacía para programas filtrados
Devuelve el resultado de la comparación dentro de every devolución de llamada:
const programs=[{format:"In-Person",schedule:"Full-Time"},{format:"Remote",schedule:"Full-Time"},{format:"In-Person",schedule:"Part-Time"},{format:"Remote",schedule:"Part-Time"}],filters={format:"Remote",schedule:"Full-Time"}; let filteredPrograms = programs.filter((program) => { return Object.entries(filters).every(([key, value]) => { return program[key] == value; }); }); console.log(filteredPrograms)O convertirlo en una función de flecha:
const programs=[{format:"In-Person",schedule:"Full-Time"},{format:"Remote",schedule:"Full-Time"},{format:"In-Person",schedule:"Part-Time"},{format:"Remote",schedule:"Part-Time"}],filters={format:"Remote",schedule:"Full-Time"}; let filteredPrograms = programs.filter((program) => { return Object.entries(filters).every(([key, value]) => program[key] == value); }); console.log(filteredPrograms)