• Operating mode
  • Existing computations
  • Equivalence
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WindowsLinuxPHPWEBDEV - Browser code
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Stored procedures
Applies a computation to each element of a WLanguage array.
arrValue is array of int = [1,2,3,4,5]
TheSum is int
TheSum = Reduce(arrValue, (Value, ...
SumCalculationVariable) => { RESULT Value + SumCalculationVariable}, 0)
// note: this example is for illustrative purposes; to find the sum of elements of an array,
// it is preferable to use the Sum function
// -> count the number of strings in an array that contain the letter "e"
// (Prefix syntax)
arr3 is array of strings = ["a","one","some","our","their"]
let Cpt = Reduce(arr3, ( Source, Total ) => { RESULT Total
  + ( Source [=] "e"? 1 ELSE 0 ) }, 0 )
// Cpt = 3
<Result> = Reduce(<Array> , <Operation to perform> [, <Initial value>])
<Result>: Type corresponding to the result
Result of the requested reduce operation.
<Array>: WLanguage array
Name of the Array variable to use. This array must be a one-dimensional array.
<Operation to perform>: WLanguage procedure
Name of WLanguage procedure to run. This procedure can be:
  • a global or local procedure,
  • an internal procedure.
It is also possible to directly use a lambda.
<Initial value>: Optional parameter, type corresponding to the initial value
Initial value to use the first time the <Operation to perform> procedure is run.

Operating mode

The <Operation to perform> procedure is called a first time with two parameters:
  • the first element of the array,
  • the initial value specified with <Initial value>.
The procedure is then called for all other elements of the array with two parameters:
  • the element of the array,
  • the value returned by the previous call.
Illustrative example
Let's study the following example:
TheSum = Reduce(arrValue, Adds, 0)
RESULT Value + Total
In this example, the code:
TheSum = Reduce(arrValue, (Value, TheSum) => { RESULT Value + TheSum }, 0)
is equivalent to the following code:
arrValue is array of int = [1,2,3,4,5]
TheSum is int
TheSum = Reduce(arrValue, (Value, TheSum) => { RESULT Value + TheSum }, 0)
With this internal procedure, the calculation can be broken down as follows:
  • IntermediateResult1 = Adds (t[1], InitialValue): in the example Adds( 1, 0 ) -> 1
  • IntermediateResult2 = Adds (t[2], IntermediateResult1): in the example Adds( 2, 1 ) -> 3
  • ...
Note: this example is for illustrative purposes; to find the sum of elements of an array, it is preferable to use Sum.

Existing computations

The most common computations are available in WLanguage:
MeanCalculates the mean of several elements:
  • elements found in an array,
  • numeric values, ...
SumCalculates the sum of the array elements.

Sequence of functions
You can use array functions in a sequence.
The following functions can be used in a sequence: This sequence can be used as a source for a FOR ALL statement or it can end with one of the following functions:
gnMean = garrUser.Filter(cbFilter).Map(cbMap).Mean()


The FOR EACH syntax also allows you to browse through the elements of an array to perform reduce operations.
Related Examples:
Filter / Map / Reduce Unit examples (WINDEV): Filter / Map / Reduce
[ + ] This example shows how to use the Filter / Map / Reduce functions.
The Filter / Map / Reduce concept allows performing operations on sets of data in a remarkably concise way.
Filter is used to filter an array of elements in a customized way (with a callback procedure).
Map is used to transform an array of elements, also with a callback procedure.
Reduce is used to aggregate data in a customized way with a callback procedure.
Here, this example is used to calculate the average age of women among the users displayed in the table below.
Business / UI classification: Neutral code
Component: wd280vm.dll
Minimum version required
  • Version 25
This page is also available for…
Click [Add] to post a comment