@lou.codes/iterables
Version:
🔁 Iterable and AsyncIterable utils
21 lines (20 loc) • 672 B
JavaScript
import { flat } from "./flat.js";
import { initial } from "./initial.js";
import { repeat } from "./repeat.js";
import { zip } from "./zip.js";
/**
* Add the given `separator` between each element of the given iterable.
*
* @category Generators
* @example
* ```typescript
* const intersperseComma = intersperse(",");
* intersperseComma([1, 2, 3]); // [1, ",", 2, ",", 3]
* ```
* @param separator Separator to add between each element.
* @returns Curried function with `separator` in context.
*/
export const intersperse = separator => {
const repeatSeparator = repeat(Infinity)(separator);
return iterable => initial(flat(zip(iterable)(repeatSeparator)));
};