/**
* Filters dataset data based on sanity checks.
* @param {Array<Object>} data - The dataset to filter.
* @param {Array<Function>} sanityChecks - An array of sanity check functions. Each function should accept a data object and return a boolean.
* @returns {Array<Object>} - A filtered array containing only data that passes all sanity checks.
*/
function filterData(data, sanityChecks) {
if (!Array.isArray(data)) {
console.error("Data must be an array.");
return [];
}
if (!Array.isArray(sanityChecks) || sanityChecks.length === 0) {
console.warn("No sanity checks provided. Returning original data.");
return data;
}
const filteredData = [];
for (const item of data) {
let passesAllChecks = true;
for (const check of sanityChecks) {
if (typeof check !== 'function') {
console.error("Sanity checks must be functions.");
return [];
}
if (!check(item)) {
passesAllChecks = false;
break; // No need to check further if one check fails
}
}
if (passesAllChecks) {
filteredData.push(item);
}
}
return filteredData;
}
// Example sanity checks (can be extended)
function checkNotNull(item) {
return item !== null;
}
function checkString(item) {
return typeof item === 'string';
}
function checkNumber(item) {
return typeof item === 'number' && !isNaN(item);
}
function checkArray(item) {
return Array.isArray(item);
}
Add your comment