cspell
Version:
A Spelling Checker for Code!
33 lines (28 loc) • 909 B
text/typescript
// 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;
}