El siguiente es un ejemplo que produce el resultado deseado.
const data = [ { itemID: '300', status: 'active', inventoryFlag: true, certifiedFlag: false, donateFlag: true }, { itemID: '400', status: 'inactive', inventoryFlag: true, certifiedFlag: true, donateFlag: false }, { itemID: '500', status: 'active', inventoryFlag: false, certifiedFlag: false, donateFlag: false }, { itemID: '600', status: 'active', inventoryFlag: false, certifiedFlag: true, donateFlag: true }, { itemID: '700', status: 'inactive', inventoryFlag: false, certifiedFlag: true, donateFlag: false } ]; document.getElementById("data").innerText = JSON.stringify(data.filter(o => o.inventoryFlag || o.donateFlag)); <textarea id="data" rows="50" cols="100"></textarea> Estoy tratando de encontrar una manera de enumerar las banderas filtradas en una matriz separada y luego usar eso en .filter() de alguna manera para obtener el mismo conjunto de resultados que el código anterior.
Por ejemplo, estas son las banderas que se usarán para filtrar Y al menos uno de los valores debe ser verdadero en el objeto que se incluirá en el conjunto de datos final:
const flags = ['inventoryFlag', 'donateFlag'];Para empezar, probé esto pero no hizo nada:
const filteredData = data.filter(o => flags.includes(Object.keys(o)));Dentro del filter , use el método some para detectar si alguna de las claves de propiedad de una entrada, que están contenidas en la matriz de flags , tiene el valor de true .
const data = [ { itemID: '300', status: 'active', inventoryFlag: true, certifiedFlag: false, donateFlag: true }, { itemID: '400', status: 'inactive', inventoryFlag: true, certifiedFlag: true, donateFlag: false }, { itemID: '500', status: 'active', inventoryFlag: false, certifiedFlag: false, donateFlag: false }, { itemID: '600', status: 'active', inventoryFlag: false, certifiedFlag: true, donateFlag: true }, { itemID: '700', status: 'inactive', inventoryFlag: false, certifiedFlag: true, donateFlag: false } ]; const flags = ['inventoryFlag', 'donateFlag']; const result = data.filter(entry => flags.some(flag => entry[flag] === true) ); console.log(result);