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.filter( )

collection.filter( ) 


 

collection.filter ( nomeMet {; param}{; param2 ; ... ; paramN} ) -> Resultado 
Parâmetro Tipo   Descrição
nomeMet  Texto in NOme da função a chamar para filtrar a coleção
param  Expression in Parâmetros para passar ao nomeMet
Resultado  Collection in Nova coleção que contém os elementos filtrados (shallow copy)

O método collection.filter( ) devolve uma nova coleção que contém todos os elementos da coleção original para os quais o resultado do método nomMet é true. Este método devolve uma cópia superficial, o que significa que os objetos ou coleções em ambas as coleções compartem a mesma referência. Se a coleção original for uma coleção compartida, a coleção devolvida também é uma coleção compartida.

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 com seu(s) parâmetro(s) em param (opcional). nomMet pode realizar qualquer prova, com ou sem os parâmetro(s), e deve devolver true em $1.result para cada elemento que cumpra a condição e portanto, para avançar a nova coleção.

nomMet recebe os parâmetros abaixo:

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

nomMet define os  parâmetros abaixo:

  • $1.result (booleano): true se o valor do elemento coincide com a condição do filtro e deve ser mantida.
  • $1.stop (booleano, opcional): true para deter a retrochamada do método. O valor devolvido for o último calculado.

Deseja obter a coleção de elementos de texto cuja longitude for menor que 6:

 C_COLLECTION($col)
 C_COLLECTION($colNew)
 $col:=New collection("hello";"world";"red horse";66;"tim";"san jose";"miami")
 $colNew:=$col.filter("LengthLessThan";6)
  //$colNew=["hello","world","tim","miami"]

O código para o método LengthLessThan é:

 C_OBJECT($1)
 C_LONGINT($2)
 If(Value type($1.value)=Is text)
    $1.result:=(Length($1.value))<$2
 End if

Deseja filtrar os elementos de acordo com seu tipo de valor:

 C_COLLECTION($c)
 $c:=New collection(5;3;1;4;6;2)
 $c.push(New object("name";"Cleveland";"zc";35049))
 $c.push(New object("name";"Blountsville";"zc";35031))
 $c2:=$c.filter("TypeLookUp";Is real// $c2=[5,3,1,4,6,2]
 $c3:=$c.filter("TypeLookUp";Is object)
  // $c3=[{name:Cleveland,zc:35049},{name:Blountsville,zc:35031}]

O código para TypeLookUp é:

 C_OBJECT($1)
 C_LONGINT($2)
 If(OB Get type($1;"value")=$2)
    $1.result:=True
 End if

 
PROPRIEDADES 

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

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)