Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
collection.reduce( )

collection.reduce( ) 


 

collection.reduce ( nomeMet {; valorInicial}{; param}{; param2 ; ... ; paramN} ) -> Resultado 
Parâmetro Tipo   Descrição
nomeMet  Texto in Nome da função a chamar para processar elementos de coleção
valorInicial  Texto, Número, Objeto, Collection, Data, Booleano in Valor a usar como primeiro argumento para a primeira chamada ao nomeMetodo
param  Expression in Parâmetros a passar ao nomeMet
Resultado  Texto, Número, Objeto, Collection, Data, Booleano in Resultado do valor do accumulator

O método collection.reduce( ) aplica o método de retrochamada nomMet contra um acumulador e cada elemento da coleção (de esquerda a direita) para reduzí-lo a um único valor.

Nota: este método não modifica a coleção original.

Em nomMet, passe o nome do método a utilizar para avaliar os elementos da coleção, junto con seu(s) parâmetro(s) em param (opcional). nomMet toma cada elemento da coleção e realiza toda operação desejada para acumular o resultado em $1.accumulator, que se devollve em $1.value.

Pode passar o valor para inicializar o acumulador em valorInicial. Se for omitido, $1.accumulator começa com Undefined.

nomMet recebe os seguintes parâmetros:

  • em $1.value: valor do elemento a processar
  • em $2: param
  • em $N...: param2...paramN

nomMet define os parâmetros abaixo:

  • $1.accumulator: valor a modificar pela função e que é inicializado por valorInicial.
  • $1.stop (booleano, opcional): true para deter a retrochamada do método. O valor devolvido é o último calculado.

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

Com o método Multiply:

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

Este exemplo permite reduzir vários elementos de coleção a um só:

 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]

Com o método Flatten:

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

 
PROPRIEDADES 

Produto: 4D
Tema: Coleções
Número 705248

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v16 R6

 
ARTICLE USAGE

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