UNPKG

@lou.codes/iterables

Version:
23 lines (22 loc) 758 B
import { createIterableIterator } from "./createIterableIterator.js"; /** * Returns a single instance of each item in the iterable or asynchronous * iterable. * * @category Asynchronous Generators * @example * ```typescript * unique([1, 2, 3, 4, 1, 2, 3, 4]); // [1, 2, 3, 4] * ``` * @param iterable Iterable to be filtered. * @returns Generators with a single instance of each item of the iterable. */ export const unique = iterable => createIterableIterator(async function* () { const set = new Set(); // eslint-disable-next-line functional/no-loop-statements for await (const item of iterable) { // eslint-disable-next-line @typescript-eslint/no-unused-expressions set.has(item) ? undefined : (set.add(item), yield item); } });