Hyperlinkv0.8.0-beta.28

Array

Array.findFirstconsteffect/Array.ts:1728
<A, B>(f: (a: NoInfer<A>, i: number) => Option.Option<B>): (
  self: Iterable<A>
) => Option.Option<B>
<A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (
  self: Iterable<A>
) => Option.Option<B>
<A>(predicate: (a: NoInfer<A>, i: number) => boolean): (
  self: Iterable<A>
) => Option.Option<A>
<A, B>(
  self: Iterable<A>,
  f: (a: A, i: number) => Option.Option<B>
): Option.Option<B>
<A, B extends A>(
  self: Iterable<A>,
  refinement: (a: A, i: number) => a is B
): Option.Option<B>
<A>(
  self: Iterable<A>,
  predicate: (a: A, i: number) => boolean
): Option.Option<A>

Returns the first element matching a predicate, refinement, or mapping function, wrapped in Option.

When to use

Use to scan an iterable in iteration order and return the first selected element or mapped value as an Option.

Details

Accepts a predicate (a, i) => boolean, a refinement, or a function (a, i) => Option<B> for simultaneous find-and-transform. If no element matches, this returns Option.none().

Example (Finding the first match)

import { Array } from "effect"

console.log(Array.findFirst([1, 2, 3, 4, 5], (x) => x > 3)) // Option.some(4)
Source effect/Array.ts:17288 lines
export const findFirst: {
  <A, B>(f: (a: NoInfer<A>, i: number) => Option.Option<B>): (self: Iterable<A>) => Option.Option<B>
  <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Option.Option<B>
  <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option.Option<A>
  <A, B>(self: Iterable<A>, f: (a: A, i: number) => Option.Option<B>): Option.Option<B>
  <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Option.Option<B>
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option.Option<A>
} = moduleIterable.findFirst
Referenced by 1 symbols