UNPKG

cspell

Version:

A Spelling Checker for Code!

33 lines (28 loc) 909 B
// alias for uniqueFilterFnGenerator export const uniqueFn = uniqueFilterFnGenerator; export function uniqueFilterFnGenerator<T>(): (v: T) => boolean; export function uniqueFilterFnGenerator<T, U>(extractFn: (v: T) => U): (v: T) => boolean; export function uniqueFilterFnGenerator<T>(extractFn?: (v: T) => T): (v: T) => boolean { const values = new Set<T>(); const extractor = extractFn || (a => a); return (v: T) => { const vv = extractor(v); const ret = !values.has(vv); values.add(vv); return ret; }; } export function unique<T>(src: T[]): T[] { return [...(new Set(src))]; } export function clean<T extends Object>(src: T): T { const r = src; type keyOfT = keyof T; type keysOfT = keyOfT[]; for (const key of Object.keys(r) as keysOfT) { if (r[key] === undefined) { delete r[key]; } } return r; }