@bitbite/filtered-list
Version:
filter a list of items
23 lines (17 loc) • 595 B
text/typescript
export class FilteredList<T> {
public filtered: Array<T> = []
private assertions: Assertion<T>[] = []
constructor(private list: Array<T>) {}
private assertAll = (item: T) : boolean => {
return this.assertions.some( assertion => assertion(item) === false ) ? false : true
}
/**
* Assert all
* @param assertions a list of assertions to be executed
*/
assert(...assertions: Assertion<T>[]): Array<T> {
this.assertions = assertions
this.filtered = this.list.filter(this.assertAll)
return this.filtered;
}
}