als-statistics
Version:
A powerful and lightweight JavaScript library for descriptive statistics, regression, clustering, outlier detection, and noise analysis using a flexible table/column architecture.
29 lines (25 loc) • 1.25 kB
JavaScript
function filterColumns(columns, columnFilter) {
const includeNames = [], excludeNames = [], regexPatterns = [];
if (Array.isArray(columnFilter)) { // Разделяем фильтры
columnFilter.forEach(filter => {
if (typeof filter === 'number') includeNames.push(filter)
else if (typeof filter === "string") {
if (filter.startsWith("-")) excludeNames.push(filter.slice(1));
else includeNames.push(filter);
} else if (filter instanceof RegExp) {
regexPatterns.push(filter);
}
});
}
const columnNames = Object.keys(columns);
let filteredNames = columnNames;
if (includeNames.length > 0) filteredNames = includeNames; // Если есть явные имена, берём только их
else if (regexPatterns.length > 0) { // Если есть regex, фильтруем по ним
filteredNames = columnNames.filter(name =>
regexPatterns.some(pattern => pattern.test(name))
);
}
if (excludeNames.length > 0) filteredNames = filteredNames.filter(name => !excludeNames.includes(name)); // Применяем исключения
return filteredNames;
}
module.exports = filterColumns