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 array and returns a new array 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

array

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

lambda

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

Returns

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

Examples

The query below iterates over the array 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 ]

Was this article helpful?

We're sorry to hear that.
Tell us how we can improve! documentation@fauna.com

Thank you for your feedback!