als-statistics
Version:
Modular JS statistics toolkit for Node.js and the browser: descriptive stats, correlations (Pearson/Spearman/Kendall), t-tests & ANOVA (Student/Welch), reliability (Cronbach’s alpha), regression (linear/logistic), clustering (DBSCAN/HDBSCAN), and table/co
17 lines (15 loc) • 924 B
JavaScript
export function filterKeys(keys,filters) {
if(filters.length === 0) return keys
let include = new Set(), exclude = new Set(), regex = [],filtered = keys;
filters.forEach(filter => {
if (typeof filter === 'number') include.add(filter)
else if (typeof filter === "string") {
if (filter.startsWith("-")) exclude.add(filter.slice(1));
else include.add(filter);
} else if (filter instanceof RegExp) regex.push(filter);
});
if (include.size > 0) filtered = Array.from(include); // Если есть явные имена, берём только их
else if (regex.length > 0) filtered = keys.filter(name => regex.some(pattern => pattern.test(name)) ); // Если есть regex, фильтруем по ним
if (exclude.size > 0) filtered = filtered.filter(name => !exclude.has(name)); // Применяем исключения
return filtered;
}