Here's an example Javascript query that returns filtered data based on the table's filterStack. Please note, this does not account for every data type/edge case, but this should help to give an idea of what could work
let filters = table1.filterStack.filters
let method = table1.filterStack.operator ==='and' ? 'every' : 'some'
function applyFilter(inputArray, filters, method) {
return inputArray.filter(item => {
return filters[method](filter => {
const { operator, value, columnId } = filter;
const itemValue = item[columnId];
switch (operator) {
case '<':
return itemValue < value;
case '>':
return itemValue > value;
case '<=':
return itemValue <= value;
case '>=':
return itemValue >= value;
case '=':
return itemValue === value;
case '!=':
return itemValue !== value;
case 'is empty':
return itemValue;
case 'is not empty':
return itemValue;
case 'isTrue':
return itemValue;
case 'isFalse':
return !itemValue;
default:
return false;
}
});
});
}
return applyFilter(table, filters, method)