filter

filter :: (Function predicate, Collection collection) => Collection | Promise<Collection>

description

Iterates over a collection (Array, Object, Map, Set) and returns a new collection of the same type containing only the values for which the predicate function evaluates to true.

Like many Collection methods in Conductor, filter works with both asynchronous & synchronous mappers. If you use a synchronous predicate function, filter will work like Array.prototype.filter and return a Collection synchronously.

const values = [0, 1, 2, 3]
const isEven = x => x % 2 === 0
filter(isEven, values) // [0, 2]

If you use an asynchronous mapper, filter will return a Promise, and you will need to use await or Promise.prototype.then to retrieve the new collection.

const values = [0, 1, 2, 3]
const isEven = async x => x % 2 === 0
filter(double, values) // Promise<Pending>
await filter(double, values) // [0, 2]

examples

basic example

import { filter } from 'conductor'

const values = [0, 1, 2, 3]
const isEven = x => x % 2 === 0
filter(isEven, values) // [0, 2]

Here, we are just using filtering on an array to keep only even values. The predicate function is synchronous.

other data structures

using the index in the predicate function

using an asynchronous predicate

If your predicate function is asynchronous, you will need to use await (or Promise.prototype.then) because the result will be a Promise.

Last updated