set.reduce()
Reduce a Set to a single, accumulated value by applying a function to each element. Iterates through elements from left to right. Uses the first element as the initial value.
Description
The reduce()
method iterates through each element in a Set to perform
a rolling operation. For example, you can use reduce()
to calculate a
rolling sum, concatenate elements, or perform complex transformations.
reduce()
calls a reducer callback function on every element of the Set
from left to right. The reducer function takes two arguments:
-
The accumulator that holds the running result from previous iterations. The first element in the Set serves as the initial accumulator.
-
The current element’s value.
The method returns the result of the last iteration. The calling Set isn’t changed.
Fold family methods
FQL supports several methods for folds, which iteratively reduce a Set to a single value. These methods include:
The methods are similar but have the following differences:
-
set.fold()
andset.foldRight()
accept an initial seed value and use it as the initial accumulator.set.reduce()
andset.reduceRight()
use the Set’s first element as the initial accumulator. -
set.fold()
andset.reduce()
iterate through the Set’s elements from left to right.set.foldRight()
andset.reduceRight()
iterate through the Set’s elements from right to left.
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
reducer |
Yes |
Anonymous FQL function to call on each element in the Set. |
Examples
-
Starting with the following product prices:
// Gets a Set of the first nine `Product` collection // documents and projects the `price` field. Product.all().take(9) { price }
{ data: [ { price: 698 }, { price: 2499 }, { price: 499 }, { price: 399 }, { price: 35 }, { price: 349 }, { price: 299 }, { price: 149 }, { price: 2399 } ] }
-
Use
reduce()
to find the maximum price in the Set:Product.all().take(9).reduce((s, v) => { if (v.price > s.price) { v } else { s } }) {price}
{ price: 2499 }
Is this article helpful?
Tell Fauna how the article can be improved:
Visit Fauna's forums
or email docs@fauna.com
Thank you for your feedback!