Filter

Filter( collection, lambda )
Filter( collection, lambda )
Filter( collection, lambda )
Filter( collection, lambda )
filter_expr( lambda, collection )
filter collection lambda
Filter( collection, lambda )
Filter( collection, lambda )

Description

The Filter function applies the Lambda to each member of the collection and returns a new collection of the same type containing only those elements for which the lambda returns true. Providing a lambda function which does not return a Boolean results in an "invalid argument" error. If a Page is passed, its decorated fields are preserved in the result.

Parameters

Argument Type Definition and Requirements

collection

Collection

The target collection over which the lambda function iterates/operates.

lambda

The anonymous function to be executed which must return a boolean.

Returns

A new collection with the elements of the collection which caused lambda to return true.

Examples

The query below iterates over the collection containing the values 1, 2, 3 executing the lambda function for each value. The lambda function returns true if the Modulo 2 of the value is 0, otherwise it returns false.

curl https://db.fauna.com/ \
    -u fnAChGwBcAACAO70ziE0cfROosNJHdgBmJU1PgpL: \
    -d '{
          "filter": {
            "lambda": "i",
            "expr": { "equals": [ 0, { "modulo": [ { "var": "i" }, 2 ] } ] }
          },
          "collection": [ 1, 2, 3 ]
        }'
client.Query(
  Filter(Arr(1, 2, 3), i => EqualsFn(0, Modulo(i, 2))));
System.out.println(
  client.query(
    Filter(
      Arr(Value(1), Value(2), Value(3)),
      Lambda(
            Value("i"),
            Equals(Value(0), Modulo(Var("i"), Value(2)))
      )
    )
  ).get());
result, _ := client.Query(
    f.Filter(
        f.Arr{1, 2, 3},
        f.Lambda("i", f.Equals(0, f.Modulo(f.Var("i"), 2))),
    ),
)

fmt.Println(result)
client.query(
  Filter(Arr(1, 2, 3), Lambda { i => Equals(0, Modulo(i, 2)) }))
client.query(
  q.filter_expr(
    lambda i: q.equals(0, q.modulo(i, 2)),
    [1, 2, 3]
  ))
$client.query do
  filter [1, 2, 3] do |i|
    equals(0, modulo(i, 2))
  end
end
client.query(
    Filter(
        collection: Arr(1, 2, 3),
        with: { i in Equals(0, Modulo(i, 2)) }
    )
)
client.query(
  q.Filter([1, 2, 3], q.Lambda("i", q.Equals(0, q.Modulo(q.Var("i"), 2)))))
.then((ret) => console.log(ret));
HTTP/1.1 200 OK
{ "resource": [ 2 ] }
[ 2 ]
[2]
[2]
[ 2 ]
[ 2 ]
[ 2 ]
[ 2 ]
[ 2 ]