4 maneiras diferentes de encontrar artigos numa colecção

Tradução automática de Deepl

Como desenvolvedor, é frequentemente necessário saber se um item especificado já existe numa colecção, ou encontrar todos os itens correspondentes a critérios particulares. Os métodos de colecção 4D oferecem muitas formas diferentes de procurar itens específicos.

Este artigo é parte de uma série que demonstra como manipular colecções com os métodos adicionados em 4D v16 R6. Para saber ainda mais, descarregue a nossa demonstração da base de dados, que inclui 12 exemplos diferentes para mostrar tudo o que pode fazer com os métodos de colecção!

Exemplo de base de dados: Gerir colecções

COMO encontrar artigos de uma colecção?

Agora, vejamos as diferentes formas que a 4D oferece para encontrar artigos numa colecção. Primeiro, começamos por construir uma colecção como se segue:

$col:=New collection(New object("City"; "Paris"; "Weather";1))
$col .push(New object("Cidade"; "New-York"; "Tempo";-10))
$col .push(New object("City"; "Tokyo"; "Weather";-5))
$col .push(New object("City"; "Miami"; "Weather";-15))

Usar “alguns” ou “todos” métodos

Para determinar se pelo menos um valor da sua colecção é superior a 0, pode usar o some método:

$b:=$col.some("WeatherGreaterThan0") // true

onde WeatherGreaterThan0 é um método de projecto, utilizado como chamada de retorno, como se segue:

$1.result:=$1.value.Weather>0

Agora, se quiser saber se todos os elementos da sua colecção coincidem com um teste personalizado, basta usar every:

$b:=$col.every("WeatherGreaterThan0") // falso

Note-se que o mesmo método de chamada de retorno poderia também ser utilizado para muitos outros casos, como uma espécie de método genérico.

filtrar uma colecção

Pode filtrar uma colecção de acordo com os resultados de um método de call back com o filter método.

Da mesma forma que os exemplos acima, se quiser criar uma colecção com todos os valores superiores a 0 de outra colecção:

$colNew:=$col.filter("WeatherGreaterThan0")
// [{Cidade:Paris,Weather:1},{Cidade:Miami,Weather:15}]

encontrar o primeiro elemento que corresponda a um critério

Se estiver à procura do primeiro elemento de uma colecção que corresponda a um método de projecto especificado, basta usar find como um método de call back:

$o:=$col.find("WeatherGreaterThan0") // {Cidade:Paris,Weather:1}

Da mesma forma, se estiver a pesquisar o índice e não o elemento em si, utilize findIndex:

$index:=$col .findIndex("WeatherGreaterThan0")
// $i=0 (primeiro índice de colecção)

Obter índice de um elemento pesquisado

Finalmente, pode utilizar o indexOf e lastIndexOf métodos para procurar uma expressão entre os elementos da colecção e devolver o índice da primeira/última ocorrência encontrada:

$col2:=New collection(1;2; "Henry"; "Albert"; "Henry";6;4; "Henry";5)
$i :=$col2.indexOf("Henry") //$i=2 index of the first occurrence
$i :=$col2.lastIndexOf("Henry")
//$i=7 index of the last occurrence

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.