UNPKG

@lou.codes/iterables

Version:
24 lines (23 loc) 700 B
import { isIterable } from "@lou.codes/predicates"; import { createIterableIterator } from "./createIterableIterator.js"; /** * Flattens one level of the given iterable. * * @category Generators * @example * ```typescript * flat([1, 2, [3, 4]]); // [1, 2, 3, 4] * ``` * @param iterable Iterable to flatten. * @returns Iterable with flatten items. */ export const flat = iterable => createIterableIterator(function* () { // eslint-disable-next-line functional/no-loop-statements for (const iterableOrItem of iterable) { // eslint-disable-next-line @typescript-eslint/no-unused-expressions isIterable(iterableOrItem) ? yield* iterableOrItem : yield iterableOrItem; } });