Skip to content

scan() function

返回从左侧连续归约的值的 Iterable/AsyncIterable。它类似于 reduce。

Signature:

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

Example

ts
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]

Open Source Code

Released under the Apache-2.0 License.