findIndex

Emits only the index of the first value emitted by the source Observable that meets some condition.

findIndex<T>(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): OperatorFunction<T, number>

Parameters

predicate

A function called with each item to test for condition matching.

thisArg

Optional. Default is undefined.

An optional argument to determine the value of this in the predicate function.

Returns

OperatorFunction<T, number>: An Observable of the index of the first item that matches the condition.

Description

It's like find, but emits the index of the found value, not the value itself.

findIndex searches for the first item in the source Observable that matches the specified condition embodied by the predicate, and returns the (zero-based) index of the first occurrence in the source. Unlike first, the predicate is required in findIndex, and does not emit an error if a valid value is not found.

Example

Emit the index of first click that happens on a DIV element

import { fromEvent } from 'rxjs'; import { findIndex } from 'rxjs/operators'; const clicks = fromEvent(document, 'click'); const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV')); result.subscribe(x => console.log(x));

See Also