UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

20 lines (19 loc) 696 B
/** Filter an iterable set of items using a matcher. */ export function* filterItems(items, match, ...args) { for (const item of items) if (match(item, ...args)) yield item; } /** Filter an array (immutably) using a matcher. */ export function filterArray(input, match, ...args) { if (!input.length) return input; const output = Array.from(filterItems(input, match, ...args)); return output.length === input.length ? input : output; } /** Filter a sequence of values using a matcher. */ export async function* filterSequence(sequence, match, ...args) { for await (const item of sequence) if (match(item, ...args)) yield item; }