@future-widget-lab/record-set
Version:
A dedicated data structure for in-memory record collections, offering fluent, immutable APIs for MongoDB-like querying, sorting, and transformation.
28 lines (21 loc) • 563 B
text/typescript
import sift from 'sift';
import type { Query } from 'sift';
type RemoveOptions<TRecord> = {
query: Query<TRecord>;
records: Array<TRecord>;
};
/**
* @description
* Use this helper to remove all records from the record set that match the given query.
*/
export const remove = <TRecord>(options: RemoveOptions<TRecord>) => {
const { query, records } = options;
const match = sift(query);
const filtered: Array<TRecord> = [];
for (const record of records) {
if (!match(record)) {
filtered.push(record);
}
}
return filtered;
};