Collection
A classe Collection gerencia variáveis do tipo [Collection] (Concepts/dt_collection.md).
Uma coleção se inicializa com:
New collection {( ...value : any )} : Collection cria uma nova coleção vazia ou pré-preenchida |
New shared collection {( ...value : any )} : Collection cria uma nova coleção compartilhada vazia ou pré-preenchida |
Exemplo
var $colVar : Collection //criação de uma variável 4D de tipo coleção
$colVar:=New collection //initialização da coleção e atribuição à variável 4D
Resumo
.at( index : Integer ) : any retorna o item na posição index, permitindo o uso de números inteiros positivos e negativos |
.average( {propertyPath : Text } ) : Real retorna a média aritmética (média) dos valores definidos na instância de coleção |
.clear() : Collection remove todos os elementos da instância da coleção e retorna uma coleção vazia |
.combine( col2 : Collection {; index : Integer } ) : Collection insere col2 elementos no final ou na posição index especificada na instância da coleção e retorna a coleção editada |
.concat( value : any { ;...valueN } ) : Collection returns a new collection containing the elements of the original collection with all elements of the value parameter added to the end |
.copy() : Collection .copy( option : Integer ) : Collection .copy( option : Integer ; groupWithCol : Collection ) : Collection .copy( option : Integer ; groupWithObj : Object ) : Collection returns a deep copy of the collection instance |
.count( { propertyPath : Text } ) : Real returns the number of non-null elements in the collection |
.countValues( value : any {; propertyPath : Text } ) : Real returns the number of times value is found in the collection |
.distinct( {options : Integer} ) : Collection .distinct( propertyPath : Text {; options : Integer } ) : Collection returns a collection containing only distinct (different) values from the original collection |
.equal( collection2 : Collection {; option : Integer } ) : Boolean recursively compares the contents of the collection and collection2 (deep comparison) |
.every( { startFrom : Integer ; } formula : 4D.Function { ;...param : any } ) : Boolean .every( { startFrom : Integer ; } methodName : Text { ;...param : any } ) : Boolean retorna true se todos os elementos da coleção passarem com sucesso em um teste implementado no objeto formula ou método methodName fornecido |
.extract( propertyPath : Text { ; option : Integer } ) : Collection .extract( propertyPath : Text ; targetPath : Text { ;...propertyPathOrTargetPathN : Text } ) : Collection cria e retorna uma nova coleção contendo valores propertyPath extraídos da coleção original de objetos |
.fill( value : any ) : Collection .fill( value : any ; startFrom : Integer { ; end : Integer } ) : Collection preenche a coleção com o value especificado, opcionalmente do índice startFrom até o índice end, e retorna a coleção resultante |
.filter( formula : 4D.Function { ; ...param : any } ) : Collection .filter( methodName : Text { ; ...param : any } ) : Collection retorna uma nova coleção contendo todos os elementos da coleção original para os quais o resultado da formula ou do methodName é true |
.find( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : any .find( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : any retorna o primeiro valor na coleção para o qual o formula ou o resultado do methodName, aplicado a cada elemento, seja true |
.findIndex( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Integer .findIndex( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Integer retorna o índice, na coleção, do primeiro valor para o qual a formula ou o methodName, aplicado em cada elemento, retorna true |
.first() : any retorna o primeiro elemento da coleção |
.flat( { depth : Integer } ) : Collection |
.flatMap( formula : 4D.Function { ; ...param : any } ) : Collection .flatMap( methodName : Text { ; ...param : any } ) : Collection cria uma nova coleção com base no resultado da chamada da formula da função 4D ou do método methodName em cada elemento da coleção original e aplanada por uma profundidade de 1 |
.includes( toSearch : expression { ; startFrom : Integer } ) : Boolean retorna True se a expressão toSearch for encontrada entre os elementos da coleção, caso contrário False |
.indexOf( toSearch : expression { ; startFrom : Integer } ) : Integer procura a expressão toSearch entre os elementos da coleção e retorna o índice da primeira ocorrência encontrada, ou -1 se não for encontrada |
.indices( queryString : Text { ; ...value : any } ) : Collection retorna os índices, na coleção original, dos elementos da coleção de objetos que correspondem às condições de busca queryString |
.insert( index : Integer ; element : any ) : Collection insere element na posição index especificada na instância da coleção e retorna a coleção editada |
.join( delimiter : Text { ; option : Integer } ) : Text converts all elements of the collection to strings and concatenates them using the specified delimiter string as separator |
.last() : any returns the last element of the collection |
.lastIndexOf( toSearch : expression { ; startFrom : Integer } ) : Integer searches the toSearch expression among collection elements and returns the index of the last occurrence |
.length : Integer returns the number of elements in the collection |
.new( { ...param : any } ) : 4D.Class cria e retorna um objeto cs.className que é uma nova instância da classe na qual ela é chamada |
.max( { propertyPath : Text } ) : any returns the element with the highest value in the collection |
.min( { propertyPath : Text } ) : any returns the element with the smallest value in the collection |
.multiSort() : Collection .multiSort( colsToSort : Collection ) : Collection .multiSort( formula : 4D.Function ; colsToSort : Collection ) : Collection enables you to carry out a multi-level synchronized sort on a set of collections |
.orderBy( ) : Collection .orderBy( pathStrings : Text ) : Collection .orderBy( pathObjects : Collection ) : Collection .orderBy( ascOrDesc : Integer ) : Collection returns a new collection containing all elements of the collection in the specified order |
.orderByMethod( formula : 4D.Function { ; ...extraParam : expression } ) : Collection .orderByMethod( methodName : Text { ; ...extraParam : expression } ) : Collection returns a new collection containing all elements of the collection in the order defined through the formula 4D function or methodName method |
.pop() : any removes the last element from the collection and returns it as the function result |
.push( element : any { ;...elementN } ) : Collection appends one or more element(s) to the end of the collection instance and returns the edited collection |
.query( queryString : Text ) : Collection .query( queryString : Text ; ...value : any ) : Collection .query( queryString : Text ; querySettings : Object ) : Collection returns all elements of a collection of objects that match the search conditions |
.reduce( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any .reduce( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any applies the formula or methodName callback against an accumulator and each element in the collection (from left to right) to reduce it to a single value |
.reduceRight( formula : 4D.Function { ; initValue : any { ; ...param : expression }} ) : any .reduceRight( methodName : Text { ; initValue : any { ; ...param : expression }} ) : any applies the formula or methodName callback against an accumulator and each element in the collection (from right to left) to reduce it to a single value |
.remove( index : Integer { ; howMany : Integer } ) : Collection removes one or more element(s) from the specified index position in the collection and returns the edited collection |
.resize( size : Integer { ; defaultValue : any } ) : Collection sets the collection length to the specified new size and returns the resized collection |
.reverse( ) : Collection returns a deep copy of the collection with all its elements in reverse order |
.shift() : any removes the first element of the collection and returns it as the function result |
.slice( startFrom : Integer { ; end : Integer } ) : Collection returns a portion of a collection into a new collection |
.some( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Boolean .some( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Boolean returns true if at least one element in the collection successfully passed a test implemented in the provided formula or methodName code |
.sort() : Collection .sort( formula : 4D.Function { ; ...extraParam : any } ) : Collection .sort( methodName : Text { ; ...extraParam : any } ) : Collection sorts the elements of the original collection and also returns the sorted collection |
.sum( { propertyPath : Text } ) : Real returns the sum for all values in the collection instance |
.unshift( value : any { ;...valueN : any } ) : Collection inserts the given value(s) at the beginning of the collection |
New collection
New collection {( ...value : any )} : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Object, Collection, Picture, Pointer | -> | Valor(es) de collection |
Resultados | Collection | <- | Nova coleção |
Descrição
O comando New collection
cria uma nova coleção vazia ou pré-preenchida e retorna sua referência.
Se não passar nenhum parâmetro, New collection cria uma coleção vazia e retorna sua referência.
Precisa atribuir a referência devolvida à uma variável 4D de tipo Collection.
Lembre-se de que as instruções
var : Collection
ouC_COLLECTION
declaram uma variável do tipoCollection
, mas não criam nenhuma coleção.
Opcionalmente pode pré-preencher a nova coleção passando um ou mais parâmetros value.
Pode também adicionar ou modificar elementos subsequentemente através de assignação. Por exemplo:
myCol[10]:="My new element"
Se o índice do novo elemento estiver além do último elemento existente da coleção, a coleção será redimensionada automaticamente e todos os novos elementos intermediários receberão um valor nulo.
Pode passar qualquer número de valores de qualquer tipo compatível (número, texto, data, imagem, ponteiro, objeto, coleção....). Diferente de arrays, coleções podem misturar dados de tipos diferentes.
Pode prestar atenção aos problemas de conversão abaixo:
- Se você passar um ponteiro, ele será mantido "como está"; ele será avaliado usando o comando
JSON Stringify
- Datas são armazenadas no formato "aaaa-mm-dd" ou strings com o formato "AAAA-MM-DDTHH:mm:ss.SSSZ", de acordo com a configuração atual "dates inside objects"/datas dentro de objetos. Quando converter datas 4D em texto antes de armazená-las em uma coleção, como padrão o programa considera a zona horária local. Pode modificar esse valor usando o seletor
Dates inside objects
do comandoSET DATABASE PARAMETER
. - Se passar a hora, é armazenada como um número de milissegundos (Real).
Exemplo 1
Se quiser criar uma nova coleção vazia e atribuí-la à uma variável coleção 4D:
var $myCol : Collection
$myCol:=New collection
//$myCol=[]
Exemplo 2
Se quiser criar uma coleção pré-prenchida:
var $filledColl : Collection
$filledColl:=New collection(33;"mike";"november";->myPtr;Current date)
//$filledColl=[33,"mike","november","->myPtr","2017-03-28T22:00:00.000Z"]
Exemplo 3
Pode criar uma nova coleção e adicionar um novo elemento:
var $coll : Collection
$coll:=New collection("a";"b";"c")
//$coll=["a","b","c"]
$coll[9]:="z" //adicionar um 10º elemento com o valor "z"
$vcolSize:=$coll.length //10
//$coll=["a","b","c",null,null,null,null,null,null,"z"]
New shared collection
História
Release | Mudanças |
---|---|
v16 R6 | Adicionado |
New shared collection {( ...value : any )} : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Shared object, Shared collection | -> | Valores da collection compartida |
Resultados | Collection | <- | A nova coleção compartilhada |