Funciones de lista list-functions

Las funciones de lista permiten manipular y trabajar con colecciones de valores dentro de las expresiones de recorrido. Estas funciones son esenciales para filtrar, ordenar, transformar y analizar matrices y listas en los recorridos del cliente.

Utilice las funciones de lista cuando necesite:

  • Filtrar y extraer elementos específicos de colecciones en función de criterios (filter, getListItem)
  • Ordenar y organizar elementos de lista en orden ascendente o descendente (sort)
  • Quitar duplicados y obtener valores únicos de las listas (distinct, distinctWithNull)
  • Comprobar si existen valores dentro de las colecciones (en)
  • Limitar el número de elementos devueltos de una lista (limit)
  • Obtener el tamaño de una lista (listSize) o transformar listas en formatos diferentes (serializeList)
  • Realizar operaciones de conjunto como buscar elementos comunes entre listas (intersect), combinar listas (mergeLists) o restar una lista de otra (differenceLists)

Las funciones de lista proporcionan potentes herramientas para trabajar con estructuras de datos complejas, lo que permite una manipulación de datos sofisticada y una lógica condicional basada en el contenido de la colección.

differenceLists differenceLists

Devuelve los elementos de la primera lista que no están presentes en la segunda lista (diferencia de conjunto: list 1 - list 2). Las entradas nulas se omiten. El resultado siempre elimina los valores duplicados y conserva el orden de inserción de la primera lista.

Sintaxis
differenceLists(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3
Parámetro Tipo Descripción
lista 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly o listDateOnly Lista de la que restar.
lista 2 Mismo tipo que la lista 1. Lista de elementos para quitar de la lista 1.
Firmas y tipos devueltos

differenceLists(listString,listString): listString

differenceLists(listInteger,listInteger): listInteger

differenceLists(listDecimal,listDecimal): listDecimal

differenceLists(listBoolean,listBoolean): listBoolean

differenceLists(listDuration,listDuration): listDuration

differenceLists(listDateTime,listDateTime): listDateTime

differenceLists(listDateTimeOnly,listDateTimeOnly): listDateTimeOnly

differenceLists(listDateOnly,listDateOnly): listDateOnly

Ejemplos
code language-json
differenceLists(['a','b','c'], ['b'])

Devuelve ['a','c'].

code language-json
differenceLists(['a','a','b'], [])

Devuelve ['a','b'].

code language-json
differenceLists([], ['a'])

Devuelve [].

distinct distinct

Devuelve los distintos valores u objetos de una lista determinada. Las entradas nulas se omiten.

Sintaxis
distinct(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para procesar. Para listObject, debe ser una referencia de campo.
keyAttributeName cadena Este parámetro es opcional y solo para listObject. Si no se proporciona el parámetro, un objeto se considera duplicado si todos los atributos tienen los mismos valores. De lo contrario, un objeto se considera duplicado si el atributo dado tiene el mismo valor.
Firmas y tipos devueltos

distinct(<listInteger>)

Devuelve una lista de enteros.

distinct(<listDecimal>)

Devuelve una lista de decimales.

distinct(<listString>)

Devuelve una lista de cadenas.

distinct(<listDateTimeOnly>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

distinct(<listDateTime>)

Devuelve una lista de fechas y horas.

distinct(<listDateOnly>)

Devuelve una lista de fechas.

distinct(<listBoolean>)

Devuelve una lista de valores booleanos.

distinct(<listDuration>)

Devuelve una lista de duraciones.

distinct(<listObject>)

distinct(<listObject>,<string>)

Devuelve una lista de objetos.

Ejemplos

distinct([10,2,10,null])

Devuelve [10, 2].

distinctWithNull distinctWithNull

Devuelve los distintos valores u objetos de una lista determinada. Si la lista tiene al menos una entrada nula, aparecerá una entrada nula en la lista devuelta.

Sintaxis
distinctWithNull(<parameters>)
Parámetros
table 0-row-3 1-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Lista para procesar.
Firmas y tipos devueltos

distinctWithNull(<listInteger>)

Devuelve una lista de enteros.

distinctWithNull(<listDecimal>)

Devuelve una lista de decimales.

distinctWithNull(<listString>)

Devuelve una lista de cadenas.

distinctWithNull(<listDateTimeOnly>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

distinctWithNull(<listDateTime>)

Devuelve una lista de fechas y horas.

distinctWithNull(<listDateOnly>)

Devuelve una lista de fechas.

distinctWithNull(<listBoolean>)

Devuelve una lista de valores booleanos.

distinctWithNull(<listDuration>)

Devuelve una lista de duraciones.

Ejemplos

distinctWithNull([10,2,10,null])

Devuelve [10, 2, null]

Nota: El parámetro <listObject> no se admite en esta función.

filter filter

Devuelve un listObject con objetos cuyo atributo key coincide con uno de los valores de clave determinados.

Sintaxis
filter(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToFilter listObject lista de objetos que se van a filtrar. Debe ser una referencia de campo.
keyAttributeName cadena nombre del atributo en los objetos de la lista dada, utilizado como clave para el filtrado
keyValueList list matriz de valores clave para el filtrado
Firmas y tipos devueltos

filter(listObject, string, listString)

filter(listObject, string, listInteger)

filter(listObject, string, listDecimal)

filter(listObject, string, listDateTime)

filter(listObject, string, listDateTimeOnly)

filter(listObject, string, listDateOnly)

filter(listObject, string, listDuration)

filter(listObject, string, listBoolean)

Devuelve un listObject.

Ejemplos

Este es un ejemplo de una carga útil pasada en un evento entrante “myevent”:

code language-json
"productListItems": [{
   "id": "product1",
   "name": "the product 1",
   "price": 20
},{
   "id": "product2",
   "name": "the product 2",
   "price": 30
},{
   "id": "product3",
   "name": "the product 3",
   "price": 50
}]

Puede utilizar la siguiente expresión:

code language-json
filter(
 @event{myevent.productListItems},
 "id",
 ["product2", "product3", "product4"]
)

Devuelve un listObject que contiene los dos objetos con “product2” y “product3” como id.

getListItem getListItem

Devuelve el elemento de la lista en el índice dado.

Sintaxis
getListItem(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2
Parámetro Tipo
list listString
list listBoolean
list listInteger
list listDecimal
list listDuration
list listDateTime
list listDateTimeOnly
list listDateOnly
índice entero
Firmas y tipo devuelto

getListItem(<listInteger>,<index>)

Devuelve un entero.

getListItem(<listDecimal>,<index>)

Devuelve un valor decimal.

getListItem(<listString>,<index>)

Devuelve una cadena.

getListItem(<listDateTimeOnly>,<index>)

Devuelve una fecha y hora sin considerar la zona horaria.

getListItem(<listDateTime>,<index>)

Devuelve una fecha y hora.

getListItem(<listDateOnly>,<index>)

Devuelve una lista de fechas.

getListItem(<listBoolean>,<index>)

Devuelve un valor booleano.

getListItem(<listDuration>,<index>)

Devuelve una duración.

Ejemplos

getListItem([10, 2, 3], 1)

Devuelve “2”

getListItem(["A", "B", "C"], 2)

Devuelve “C”

Ejemplos con un campo de evento “event.appVersion” con valor: “20.45.2.3434”

split(@event{event.appVersion}, "\\.")

Devuelve ["20", "45", "2", "3434"]

getListItem(split(@event{event.appVersion}, "\\."), 0)

Devuelve “20”

en in

Comprueba si el primer valor del argumento está en la lista. La comprobación se realiza mediante un valor Equal en cada argumento value. Devuelve true si se encuentra el valor del argumento; en caso contrario, devuelve false.

El tipo de <expression> debe coincidir con los elementos de la lista. Los tipos de elementos de la lista, como recordatorio, deben coincidir entre sí.

Sintaxis
in(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2
Parámetro Tipo
Cadena Cadena
Booleano Booleano
Número entero Número entero
Decimal Decimal
Duración Duración
Fecha/Hora Fecha/Hora
DateTimeOnly DateTimeOnly
Lista listString
Lista listBoolean
Lista listInteger
Lista listDecimal
Lista listDuration
Lista listDateTime
Lista listDateTimeOnly
Lista listDateOnly
Firma y tipo devuelto

in(<integer>,<listInteger>)

in(<decimal>,<listDecimal>)

in(<string>,<listString>)

in(<boolean>,<listBoolean>)

in(<dateTimeOnly>,<listDateTimeOnly>)

in(<dateTime>,<listDateTime>)

in(<dateOnly>,<listDateOnly>)

in(<duration>,<listDuration>)

Devuelve un valor booleano.

Ejemplos

in(4,[4,5,3,4])

Devuelve verdadero.

in(8,[4,5,3,4])

Devuelve falso.

in(#{ExperiencePlatform.ProfileFieldGroup.profile.person.gender}, ["male"])

intersect intersect

Devuelve los valores comunes de las dos listas de entrada. Si una de las dos listas es nula, devuelve una lista vacía.

Sintaxis
intersect(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2
Parámetro Tipo
lista 1 list
lista 2 list
Firmas y tipos devueltos

intersect(listString,listString): listString

intersect(listDecimal,listDecimal): listDecimal

intersect(listInteger,listInteger): listInteger

intersect(listDateTime,listDateTime): listDateTime

intersect(listDateTimeOnly,listDateTimeOnly): listDateTimeOnly

intersect(listDateOnly,listDateOnly): listDateOnly

intersect(listDuration,listDuration): listDuration

intersect(listBoolean,listBoolean): listBoolean

Devuelve una lista.

Ejemplos
code language-json
intersect(
    ["sports", "news", "documentary"],
    ["sports", "movies", "documentary"]
)

Devuelve [“deportes”, “noticias”]

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
    ["sports", "documentary"]
)

Devuelve elementos comunes entre atributos de perfil y una lista de categorías determinada.

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
        @event{myEvent.sport_interests}
)

Devuelve elementos comunes entre atributos de perfil y un campo de evento determinado.

límite limit

Devuelve los primeros o últimos elementos N de una lista.

Sintaxis
limit(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista a considerar. Para listObject, debe ser una referencia de campo.
numberOfItems entero Número de elementos que se van a devolver de la lista determinada.
firstOrLastItems Booleano Este parámetro es opcional (true de forma predeterminada). true devuelve los primeros elementos. false devuelve los últimos elementos.
Firma y tipo devuelto

limit(<listString>,<integer>)

limit(<listString>,<integer>,<boolean>)

Devuelve una lista de cadenas.

limit(<listInteger>,<integer>)

limit(<listInteger>,<integer>,<boolean>)

Devuelve una lista de enteros.

limit(<listDecimal>,<integer>)

limit(<listDecimal>,<integer>,<boolean>)

Devuelve una lista de decimales.

limit(<listBoolean>,<integer>)

limit(<listBoolean>,<integer>,<boolean>)

Devuelve una lista de valores booleanos.

limit(<listDateOnly>,<integer>)

limit(<listDateOnly>,<integer>,<boolean>)

Devuelve una lista de fechas.

limit(<listDateTimeOnly>,<integer>)

limit(<listDateTimeOnly>,<integer>,<boolean>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

limit(<listDateTime>,integer>)

limit(<listDateTime>,<integer>,<boolean>)

Devuelve una lista de fechas y horas.

limit(<listDuration>,<integer>)

limit(<listDuration>,<integer>,<boolean>)

Devuelve una lista de duraciones.

limit(<listObject>,<integer>)

limit(<listObject>,<integer>,<boolean>)

Devuelve una lista de objetos.

Ejemplos

limit(["A", "B", "C", "D", "E"], 3)

Devuelve ["A","B","C"].

limit(["A", "B", "C", "D", "E"], 3, false)

Devuelve ["C","D","E"].

listSize listSize

Cuenta el número de elementos de la lista.

Sintaxis
listSize(<parameters>)
Parámetros
table 0-row-3 1-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para procesar. Para listObject, debe ser una referencia de campo. Un listObject no puede contener un objeto nulo.
Firmas y tipo devuelto

listSize(<listInteger>)

listSize(<listDecimal>)

listSize(<listString>)

listSize(<listBoolean>)

listSize(<listDateTimeOnly>)

listSize(<listDateTime>)

listSize(<listDateOnly>)

listSize(<listDuration>)

Devuelve un entero.

listSize(<listObject>)

Ejemplos

listSize([10,2,3])

Devuelve 3.

listSize(@event{my_event.productListItems})

Devuelve el número de objetos de una matriz determinada de objetos (tipo listObject).

mergeLists mergeLists

Combina dos listas. Cuando deduplicate tiene true, devuelve la unión de las dos listas con los valores duplicados eliminados. Cuando deduplicate tiene false, devuelve la concatenación de las dos listas (los elementos de la lista 1 seguidos de los elementos de la lista 2), conservando los duplicados. Las entradas nulas se omiten.

Nota: El parámetro deduplicate debe ser un literal true o false, no una expresión booleana dinámica.

Sintaxis
mergeLists(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
lista 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly o listDateOnly Primera lista. Sus elementos se agregan primero al resultado.
lista 2 Mismo tipo que la lista 1. Segunda lista. Sus elementos se agregan después de los elementos de la lista 1.
deduplicar literal booleano true devuelve la unión de ambas listas con duplicados eliminados. false devuelve la concatenación de ambas listas, conservando los duplicados. Debe ser un literal true o false.
Firmas y tipos devueltos

mergeLists(listString,listString,boolean): listString

mergeLists(listInteger,listInteger,boolean): listInteger

mergeLists(listDecimal,listDecimal,boolean): listDecimal

mergeLists(listBoolean,listBoolean,boolean): listBoolean

mergeLists(listDuration,listDuration,boolean): listDuration

mergeLists(listDateTime,listDateTime,boolean): listDateTime

mergeLists(listDateTimeOnly,listDateTimeOnly,boolean): listDateTimeOnly

mergeLists(listDateOnly,listDateOnly,boolean): listDateOnly

Ejemplos
code language-json
mergeLists(['a','b'], ['b','c'], true)

Devuelve ['a','b','c'].

code language-json
mergeLists(['a','b'], ['b','c'], false)

Devuelve ['a','b','b','c'].

serializeList serializeList

Convierte una lista determinada (cualquier tipo excepto listObject) en una cadena.

Sintaxis
serializeList(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Lista para convertir en cadena.
separador cadena Separador entre cada elemento de lista en la cadena de salida.
addQuotes Booleano Este parámetro indica si cada elemento de la cadena de salida debe incluir comillas (true) o no (false).
Firma y tipo devuelto

serializeList(<listInteger>,<string>,<boolean>)

serializeList(<listDecimal>,<string>,<boolean>)

serializeList(<listString>,<string>,<boolean>)

serializeList(<listBoolean>,<string>,<boolean>)

serializeList(<listDateTimeOnly>,<string>,<boolean>)

serializeList(<listDateTime>,<string>,<boolean>)

serializeList(<listDateOnly>,<string>,<boolean>)

serializeList(<listDuration>,<string>,<boolean>)

Devolver una cadena.

Ejemplos

serializeList(["Hello","World"], " ", false)

Devuelve “Hello World”.

serializeList(["Hello", "World"], ",", true)

Devuelve “Hello”,“World”.

ordenar sort

Ordena una lista de valores u objetos en orden natural.

Sintaxis
sort(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToSort listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para ordenar. Para listObject, debe ser una referencia de campo.
keyAttributeName cadena Este parámetro solo es para listObject. El nombre del atributo en los objetos de la lista dada se utiliza como clave para ordenar.
sortingOrder Booleano Ascendente (true) o descendente (false)
Firma y tipo devuelto

sort(<listInteger>,<boolean>)

Devuelve una lista de enteros.

sort(<listDecimal>,<boolean>)

Devuelve una lista de decimales.

sort(<listString>,<boolean>)

Devuelve una lista de cadenas.

sort(<listDateTimeOnly>,<boolean>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

sort(<listDateTime>,<boolean>)

Devuelve una lista de fechas y horas.

sort(<listDateOnly>,<boolean>)

Devuelve una lista de fechas.

sort(<listBoolean>,<boolean>)

Devuelve una lista de valores booleanos.

sort(<listObject>,<string>,<boolean>)

Devuelve una lista de objetos.

Ejemplos

sort(["A", "C", "B"], true)

Devuelve ["A","B","C"].

sort([1, 3, 2], false)

Devuelve [3, 2, 1].

sort(@event{my_event.productListItems}, "SKU", true)

Devuelve el listObject ordenado por atributo SKU (orden ascendente)

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page documents all list functions available in AJO journey expressions, covering how to filter, sort, deduplicate, check membership, limit, serialize, merge, subtract, and find intersections of lists and arrays.

Intents:

  • Remove duplicate values from a list using distinct (ignoring nulls) or distinctWithNull (preserving nulls)
  • Filter a listObject to return only objects matching specific key values using filter
  • Retrieve an element at a specific index from a list using getListItem
  • Check whether a value exists in a list using in
  • Find common elements between two lists using intersect
  • Combine two lists, with or without deduplication, using mergeLists
  • Subtract one list from another (set difference) using differenceLists
  • Return the first or last N elements of a list using limit
  • Count the total number of elements in a list using listSize
  • Convert a list to a delimited string using serializeList
  • Sort a list in ascending or descending order using sort

Glossary:

  • listObject: A list of complex objects that must be a field reference; cannot contain null objects (product-specific)
  • keyAttributeName: An optional string parameter used with distinct, filter, and sort to identify which object attribute to use for deduplication, filtering, or sorting (product-specific)
  • intersect: A set operation returning only the elements present in both input lists
  • mergeLists: A set operation returning the union (deduplicated) or concatenation (with duplicates) of two lists, depending on the deduplicate parameter (product-specific)
  • differenceLists: A set operation returning the items of the first list that are not present in the second list (product-specific)

Guardrails:

  • distinctWithNull does not support the <listObject> parameter type
  • filter requires the listObject parameter to be a field reference, not an inline literal
  • listSize on a listObject requires the list to be a field reference; a listObject cannot contain null objects
  • serializeList does not support the listObject type
  • mergeLists and differenceLists only support scalar list types (string, integer, decimal, boolean, dateTime, dateTimeOnly, dateOnly, duration); listObject is not supported
  • mergeLists’s deduplicate parameter must be a literal true/false, not a dynamic boolean expression
  • differenceLists always deduplicates its result; there is no option to keep duplicates

Terminology:

  • Canonical name: List functions — Acronym: none — variants: collection functions, array functions
  • Synonyms: “listSize” = “count list elements”; “serializeList” = “join list to string”
  • Do not confuse: “distinct” (ignores nulls) ≠ “distinctWithNull” (preserves null as a distinct value)
  • Do not confuse: “limit” with third parameter true (returns first N items) ≠ “limit” with false (returns last N items)
  • Do not confuse: “intersect” (common elements between two lists) ≠ “filter” (elements matching specific key values)
  • Do not confuse: “mergeLists” (combines two lists, union or concatenation) ≠ “differenceLists” (subtracts one list from another) ≠ “intersect” (common elements only)

FAQ:

  • Q: How do I get the first 3 items of a list? — Use limit(myList, 3) or limit(myList, 3, true); the default is to return the first items.
  • Q: How do I get the last 3 items of a list? — Use limit(myList, 3, false).
  • Q: What is the difference between distinct and distinctWithNull?distinct ignores null values and excludes them from the result; distinctWithNull treats null as a distinct value and includes one null entry if any nulls are present.
  • Q: Can I filter a list of strings with filter? — No, filter only works on listObject; for scalar lists use in or distinct for deduplication.
  • Q: How do I check if a value is in a list? — Use in(value, myList), which returns true if the value is found in the list.
  • Q: Can I sort a listObject by a specific attribute? — Yes, use sort(@event{...}, "attributeName", true) where the second parameter is the attribute name and the third is the sort direction (true = ascending).
  • Q: How do I combine two lists and remove duplicates? — Use mergeLists(list1, list2, true).
  • Q: How do I combine two lists but keep duplicate values? — Use mergeLists(list1, list2, false).
  • Q: How do I find the items in one list that are not in another? — Use differenceLists(list1, list2), which returns the items of list1 not present in list2.
  • Q: What is the difference between intersect and differenceLists?intersect returns items common to both lists; differenceLists returns items in the first list that are absent from the second list.
recommendation-more-help
journey-optimizer-help