- Operating mode
- Existing computations
- Equivalence
Reduce (Function) In french: Agrège 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) Trace(TheSum) // 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
Syntax
<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. Remarks 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 exampleLet's study the following example:
TheSum = Reduce(arrValue, Adds, 0) INTERNAL PROCÉDURE Adds(Value, Total) RESULT Value + Total END
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:
| | Mean | Calculates the mean of several elements: - elements found in an array,
- numeric values, ...
| Sum | Calculates the sum of the array elements. |
Sequence of functionsYou 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: Example:
gnMean = garrUser.Filter(cbFilter).Map(cbMap).Mean()
Equivalence The FOR EACH syntax also allows you to browse through the elements of an array to perform reduce operations.
Related Examples:
|
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
This page is also available for…
|
|
|