Skip to main content

scan

scan() function

Returns a Iterable/AsyncIterable of successively reduced values from the left. It's similar to reduce

Signature:

declare function scan<A extends readonly []>(f: Arrow, iterable: A): IterableIterator<never>;

Returns:

IterableIterator<never>

Example

const iter = scan((acc, cur) => acc * cur, 1, [1, 2, 3, 4 ]);
iter.next(); // {value: 1, done:false}
iter.next(); // {value: 1, done:false}
iter.next(); // {value: 2, done:false}
iter.next(); // {value: 6, done:false}
iter.next(); // {value: 24, done:false}
iter.next(); // {value: undefined, done: true}

// with pipe
pipe(
[1, 2, 3, 4],
scan((acc, cur) => acc * cur),
toArray,
); // [1, 2, 6, 24]