Skip to content

flatMap() function

各要素を実行してマップされた結果をフラット化することにより、フラット化された値の Iterable/AsyncIterable を返します。

Signature:

typescript
declare function flatMap<A, B = unknown>(
  f: (a: A) => B,
  iterable: Iterable<A>,
): IterableIterator<DeepFlatSync<B, 1>>;

Example

ts
const iter = flatMap((s) => s.split(" "), ["It is", "a good", "day"]);
iter.next(); // {done:false, value: "It"}
iter.next(); // {done:false, value: "is"}
iter.next(); // {done:false, value: "a"}
iter.next(); // {done:false, value: "good"},
iter.next(); // {done:false, value: "day"},
iter.next(); // {done:true, value: undefined}

// with pipe
pipe(
  ["It is", "a good", "day"],
  flatMap((s) => s.split(" ")),
  toArray,
); // ["It", "is", "a", "good", "day"]

await pipe(
  Promise.resolve(["It is", "a good", "day"]),
  flatMap((s) => s.split(" ")),
  toArray,
); // ["It", "is", "a", "good", "day"]

// if you want to use asynchronous callback
await pipe(
  Promise.resolve(["It is", "a good", "day"]),
  toAsync,
  flatMap(async (s) => s.split(" ")),
  toArray,
); // ["It", "is", "a", "good", "day"]

Try It

see pipe, toAsync, toArray

Open Source Code

Released under the Apache-2.0 License.