UNPKG

@lou.codes/iterables

Version:
22 lines (21 loc) 705 B
import { createIterableIterator } from "./createIterableIterator.js"; /** * Returns a single instance of each item in the iterable. * * @category 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(function* () { const set = new Set(); // eslint-disable-next-line functional/no-loop-statements for (const item of iterable) { // eslint-disable-next-line @typescript-eslint/no-unused-expressions set.has(item) ? undefined : (set.add(item), yield item); } });