Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
collection.reduce( )

collection.reduce( ) 


 

collection.reduce ( nomMet {; ValorInicial}{; param}{; param2 ; ... ; paramN} ) -> Resultado 
Parámetro Tipo   Descripción
nomMet  Texto in Nombre de la función a llamar para procesar los elementos de la colección
ValorInicial  Texto, Número, Objeto, Collection, Fecha, Booleano in Valor a utilizar como primer argumento para la primera llamada de nomMet
param  Expresión in Parámetro(s) a pasar a nomMet
Resultado  Texto, Número, Objeto, Collection, Fecha, Booleano in Resultado del valor acumulador

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
Número 705248

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v16 R6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)