4D v19

collection.reduce( )

Inicio

 
4D v19
collection.reduce( )

collection.reduce( )  


 

El método collection.reduce( ) aplica el método de retrollamada nomMet contra un acumulador y cada elemento de la colección (de izquierda a derecha) para reducirlo a un único valor.

Nota: este método no modifica la colección original.

En nomMet, pase el nombre del método a utilizar para evaluar los elementos de la colección, junto con su(s) parámetro(s) en param (opcional). nomMet toma cada elemento de colección y realiza toda operación deseada para acumular el resultado en $1.accumulator, que se devuelve en $1.value.

Puede pasar el valor para inicializar el acumulador en valorInicial. Si se omite, $1.accumulator comienza con Undefined.

nomMet recibe los siguientes parámetros:

  • en $1.value: valor del elemento a procesar
  • en $2: param
  • en $N...: param2...paramN

nomMet define los siguientes parámetros:

  • $1.accumulator: valor a modificar por la función y que es inicializado por valorInicial.
  • $1.stop (booleano, opcional): true para detener la retrollamada del método. El valor devuelto es el último calculado.

 C_COLLECTION($c)
 $c:=New collection(5;3;5;1;3;4;4;6;2;2)
 $r:=$c.reduce("Multiply";1) //returns 86400

Con el siguiente método Multiply:

 If(Value type($1.value)=Is real)
    $1.accumulator:=$1.accumulator*$1.value
 End if

Este ejemplo permite reducir varios elementos de colección a uno solo:

 C_COLLECTION($c;$r)
 $c:=New collection
 $c.push(New collection(0;1))
 $c.push(New collection(2;3))
 $c.push(New collection(4;5))
 $c.push(New collection(6;7))
 $r:=$c.reduce("Flatten") //$r=[0,1,2,3,4,5,6,7]

Con el siguiente método Flatten:

 If($1.accumulator=Null)
    $1.accumulator:=New collection
 End if
 $1.accumulator.combine($1.value)

 
PROPIEDADES 

Producto: 4D
Tema: Colecciones

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)